Nous sommes dans la transition au travail de python 2.7 vers python 3.5. C'est un changement à l'échelle de l'entreprise et la plupart de nos scripts actuels ont été écrits en 2.7 et aucune bibliothèque supplémentaire. J'ai profité de la distribution Anaconda que nous utilisons et avons déjà modifié la plupart de nos scripts en utilisant le module 2to3 ou en les réécrivant complètement. Je suis coincé sur un morceau de code, que je n'ai pas écrit et l'auteur original n'est pas là. Il n'a pas non plus fourni de commentaires, donc je ne peux que deviner l'ensemble du script. 95% du script fonctionne correctement jusqu'à la fin où après il crée 7 fichiers CSV avec différentes informations analysées, il a une fonction personnalisée pour combiner les fichiers CSV dans et classeur xls avec chaque CSV comme nouvel onglet.Combiner plusieurs fichiers CSV dans un seul classeur xls Python 3
import csv
import xlwt
import glob
import openpyxl
from openpyxl import Workbook
Parsefiles = glob.glob(directory + '/' + "Parsed*.csv")
def xlsmaker():
for f in Parsefiles:
(path, name) = os.path.split(f)
(chort_name, extension) = os.path.splittext(name)
ws = wb.add_sheet(short_name)
xreader = csv.reader(open(f, 'rb'))
newdata = [line for line in xreader]
for rowx, row in enumerate(newdata)
for colx, value in enumerate(row):
if value.isdigit():
ws.write(rowx, colx, value)
xlsmaker()
for f in Parsefiles:
os.remove(f)
wb.save(directory + '/' + "Finished" + '' + oshort + '' + timestr + ".xls")
Ceci a été écrit tout en python 2.7 et fonctionne toujours correctement si je l'exécute en python 2.7. Le problème est qu'il génère une erreur lors de l'exécution de Python 3.5.
File "parsetool.py", line 521, in (module)
xlsmaker()
File "parsetool.py", line 511, in xlsmaker
ws = wb.add_sheet(short_name)
File "c:\pythonscripts\workbook.py", line 168 in add_sheet
raise TypeError("The paramete you have given is not of the type '%s'"% self._worksheet_class.__name__)
TypeError: The parameter you have given is not of the type "Worksheet"
Des idées sur ce qui devrait être fait pour corriger l'erreur ci-dessus? Iv'e a essayé plusieurs réécritures, mais j'ai des erreurs similaires ou de nouvelles erreurs. Je considère juste notre toute nouvelle méthode pour créer les xls, probablement des pandas à la place.
Merci pour la réponse. Ce qui a vraiment résolu le problème était de corriger l'encodage des fichiers csv. En plus de cela, certains des fichiers devaient avoir un encodage spécifique différent du classeur pour que le script fonctionne. Totalement bizarre, mais ça marche et maintenant j'ai quatre scripts fonctionnant tous sous une interface graphique PyQt. Je vais probablement ajouter les pandas pour s'assurer que ça marchera dans le futur. –
Hey @TobiasWright Est-il possible de poster le code ici? J'essaie de suivre. Je vous remercie. – JPC
'NameError: le nom 'xlsxwriter' n'est pas défini'. En outre, il semble que 'pandas 'suppose que' openpyxl' est disponible. Pouvez-vous rendre cette réponse plus complète? (Je pars de miniconda, si ça répond pourquoi je n'ai pas tout installé.) – r2evans