舒蒂尔。快走()引发类型错误:强制为Unicode:需要字符串或缓冲区,找到实例

2024-10-06 10:32:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用舒蒂尔。快走但错误如下:

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

我是python新手,不知道这里面有什么问题。有人能帮我吗?我甚至检查了是否要打开文件两次,但事实并非如此。在

^{pr2}$

编辑:以下代码仍然有效:

    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')

Tags: csvinpymovelinetempfiledictfile
1条回答
网友
1楼 · 发布于 2024-10-06 10:32:30

shutil.move()接受两个文件名,而不是一个类似文件和一个文件名。如果要将文件的内容复制到文件名中,请以写入模式打开文件名并使用shutil.copyfileobj()。在

相关问题 更多 >