TypeError: prévu un tampon de caractères de l'objet

Je suis en train d'écrire une liste d'une liste dans un nouveau fichier, mais j'obtiens cette erreur:

Traceback (most recent call last): File "", line 1, in

dowork() File "C:\Python27\work\accounting\formatting quickbooks file\sdf.py", ligne 11, dans dowork
WriteFile() File "C:\Python27\work\accounting\formatting quickbooks file\sdf.py", la ligne 71, dans WriteFile
f.écrire(thefile) TypeError: prévu un tampon de caractères de l'objet

Comment puis-je écrire une liste d'une liste dans un fichier?

C'est de cette façon que je suis en train d'écrire:

def WriteFile():
    global thefile
    f = open("output"+'.csv','w')
    f.seek(0)
    f.write(thefile)
    f.close()

et voici la source si vous en avez besoin:

import csv
thefile = []
output = []
def dowork():
sourceFile='e.csv'
thefile=ReadFile(sourceFile)
CleanFile(sourceFile)
ProcessFile()
WriteFile()
def ReadFile(filename):
return list(csv.reader(open(filename, 'rb'), delimiter=',', quotechar='"'))[1:]
def CleanFile(sourceFile):
global thefile
thefiletmp=[]
for i, line in enumerate(thefile):
if line[2]=='':
del thefile[i]
else:
thefiletmp.append(line[4:])
thefile=thefiletmp
def ProcessFile():
global thefile
iCompany=1
iNum=0
iDate=2
iAging=3
iBalance=4
COMPANIES=GetDistinctValues(1)
mytemparray=[]
mytempfile=[]
for company in COMPANIES:
for line in thefile:
if line[iCompany]==company:
mytemparray.append(line[iCompany])
mytemparray.append(line[iNum])
mytemparray.append(line[iDate])
if line[2] in range(0,31):
mytemparray.append(line[iBalance])
mytemparray.append('0')
mytemparray.append('0')
mytemparray.append('0')
if line[2] in range(31,61):
mytemparray.append('0')
mytemparray.append(line[iBalance])
mytemparray.append('0')
mytemparray.append('0')
if line[2] in range(61,91):
mytemparray.append('0')
mytemparray.append('0')
mytemparray.append(line[iBalance])
mytemparray.append('0')
if line[2] >90:
mytemparray.append('0')
mytemparray.append('0')
mytemparray.append('0')
mytemparray.append(line[iBalance])
mytempfile.append(mytemparray)
mytemparray=[]
thefile=mytempfile
def WriteFile():
global thefile
f = open("output"+'.csv','w')
f.seek(0)
f.write(thefile)
f.close()
def GetDistinctValues(theColumn):
return sorted(list(set(line[theColumn] for line in thefile)))
Vraiment, vous devez remplacer la variable globale avec une variable que vous passez à chaque fonction, et fermer les fichiers lorsque vous avez terminé avec eux. Et maintenant que nous pouvons voir l'ensemble du code, j'avais suggère fortement de le réorganiser de sorte que vous avez un ProcessLine fonction (vous pouvez juste inverser les line et company boucles), et un peu de filtre, ligne par ligne, de sorte que vous n'avez pas besoin d'une liste, et n'ont pas besoin d'enlever des choses à partir de la liste sur place, et ainsi de suite. Le tout serait beaucoup plus simple de cette façon.
double possible de TypeError:: un tampon de caractères de l'objet tout en essayant de sauver entier de texte

OriginalL'auteur l--''''''---------'''''''''''' | 2012-09-25