Je suis en train d'utiliser shutil.move mais obtenir erreur comme ci-dessous:shutil.move() renvoie TypeError: Unicode à contraindre: Chaîne de besoin ou d'un tampon, par exemple trouvé
Traceback (most recent call last):
File "packageTest.py", line 202, in <module>
writeResult()
File "packageTest.py", line 92, in writeResult
shutil.move(tempfile,'report.csv')
File "/usr/local/lib/python2.7/shutil.py", line 294, in move
os.rename(src, real_dst)
TypeError: coercing to Unicode: need string or buffer, instance found
Je suis nouveau à python et non sûr de ce qui ne va pas. Quelqu'un peut-il m'aider dans ce domaine? J'ai vérifié même si j'essaie d'ouvrir le fichier deux fois mais ce n'est pas le cas.
def writeResult():
tempfile=NamedTemporaryFile(delete=False)
result='FAIL'
with open('report.csv','rb') as infile,tempfile:
csvreader=csv.DictReader(infile)
fieldnames=csvreader.fieldnames
csvwriter=csv.DictWriter(tempfile,fieldnames)
csvwriter.writeheader()
for node,row in enumerate(csvreader,1):
if(row['EXIST_IN_BOM']=='Yes'):
if(row['EXIST_IN_TAR']=='No'):
csvwriter.writerow(dict(row,RESULT='FAIL'))
csvwriter.writerow(dict(row,COMMENT='File is missing in package'))
else:
result='PASS'
else:
if(row['EXIST_IN_TAR']=='Yes'):
csvwriter.writerow(dict(row,RESULT='FAIL'))
csvwriter.writerow(dict(row,COMMENT='File is missing in BOM'))
if(row['SIZE_IN_TAR']==row['SIZE_IN_ALPHA']):
result='PASS'
else:
csvwriter.writerow(dict(row,RESULT='FAIL'))
csvwriter.writerow(dict(row,COMMENT='File size not same'))
if(result=='PASS'):
csvwriter.writerow(dict(row,RESULT='PASS'))
shutil.move(tempfile,'report.csv')
return
Edit: Le code ci-dessous fonctionne bien:
tempfile=NamedTemporaryFile(delete=False)
with open('dict.csv','rb') as infile,tempfile:
csvreader=csv.DictReader(infile)
fieldnames=csvreader.fieldnames
csvwriter=csv.DictWriter(tempfile,fieldnames)
csvwriter.writeheader()
for node,row in enumerate(csvreader,1):
if(row['EmpId']=='119093'):
csvwriter.writerow(dict(row,Rank='1'))
if(row['EmpId']=='119094'):
csvwriter.writerow(dict(row,Rank='2'))
shutil.move(tempfile.name,'dict.csv')
s'il vous plaît voir la partie Edit. shutil.move fonctionne également si nous voulons ... le même type de fichier que j'ai là aussi. Mais je ne suis pas sûr pourquoi il ne fonctionne pas cette fois –
Lisez la première phrase que j'ai écrite. –
Désolé c'est mon erreur que je n'ai pas vu chose si mineure ... je viens de changer le code comme shutil.move (tempfile.name, "report.csv"). Merci beaucoup d'avoir signalé ça ... Je suppose que trop de travail me fait perdre du temps –