2017-10-20 16 views
2

J'ai une commande qui donne toutes les URLs de mon projet. Et je veux exporter cette commande au fichier xlsx. Des idées? Dans le message d'impression devrait être commande urlPython URL commande exporter vers le fichier .xlsx

Merci les gars à l'avance.

urls.py (commande qui donne ici toutes les urls)

from django.conf.urls import RegexURLPattern, RegexURLResolver 
from django.core import urlresolvers 
from django.core.management import BaseCommand 


class Command(BaseCommand): 
    def add_arguments(self, parser): 

     pass 

    def handle(self, *args, **kwargs): 

     urls = urlresolvers.get_resolver() 
     all_urls = list() 

     def func_for_sorting(i): 
      if i.name is None: 
       i.name = '' 
      return i.name 

     def show_urls(urls): 
      for url in urls.url_patterns: 
       if isinstance(url, RegexURLResolver): 
        show_urls(url) 
       elif isinstance(url, RegexURLPattern): 
        all_urls.append(url) 

     show_urls(urls) 

     all_urls.sort(key=func_for_sorting, reverse=False) 
     print('Total urls:', len(all_urls)) 
     print('-' * 220) 
     for url in all_urls: 
      print('| {0.regex.pattern:100} | {0.name:50} | {0.lookup_str:70} |'.format(url)) 
     print('-' * 220) 

export_test.py (commande Exporter)

import xlsxwriter 

# Create a workbook and add a worksheet 
workbook = xlsxwriter.Workbook('Test2.xlsx') 
worksheet = workbook.add_worksheet() 

# Add a bold format 

bold = workbook.add_format({'bold': True}) 
# Write header 

worksheet.write('A1', 'URL', bold) 
worksheet.write('B1', 'Class', bold) 


expanses = (
    ['TestUrl.com', 'TestClass'], 
    ['TestUrl2.com', 'ExcelClass'], 
    ['TestUrl3.com', 'OrderClass'], 
    ['TestUrl4.com', 'TransferClass'], 
) 
row = 1 
col = 0 

for item, cost in (expanses): 
    worksheet.write(row, col, item) 
    worksheet.write(row, col + 1, cost) 
    row += 1 

workbook.close() 

Je pense qu'il devrait être dans le message d'impression

+0

vous pouvez directement écrire votre commande dans le fichier csv, pourquoi avez-vous besoin d'un script d'exportation pour le même. Une fois que vous avez reçu tous les urls et les noms de classe qui lui sont associés, il s'agit simplement d'un problème d'auteur csv pour lequel vous pouvez consulter 'https: // docs.python.org/2/library/csv.html'. vous n'auriez pas besoin de l'installation de 'xlsxwriter' –

Répondre

2

Je pourrais vous mal comprendre ici, mais si vous voulez exporter vers le fichier xlsx à partir de la commande, t hen suffit de remplacer la ligne qui imprime les URL pour l'exporter dans le fichier xlsx à la place.

row = 0 
for url in all_urls: 
    worksheet.write(row, 0, url) 
    row += 1 

(Vous devrez également ajouter bits du code de export_test.py au fichier urls.py dans les endroits appropriés, par exemple ouvrir et fermer le classeur, ajoutez une feuille de calcul, xlsxwriter d'importation.)