Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从csv文件复制以进行编辑_Python_Python 3.x - Fatal编程技术网

Python 如何从csv文件复制以进行编辑

Python 如何从csv文件复制以进行编辑,python,python-3.x,Python,Python 3.x,当我试图从csv文件复制以编辑原始文件时 然后我将效果应用于原始图像 import csv import shutil from tempfile import NamedTemporaryFile filename = "data1.csv" temp_file = NamedTemporaryFile(delete=False) print(temp_file.name) with open(filename, "r",encoding='utf8') as csvfile, temp_f

当我试图从csv文件复制以编辑原始文件时 然后我将效果应用于原始图像

import csv
import shutil
from tempfile import NamedTemporaryFile

filename = "data1.csv"
temp_file = NamedTemporaryFile(delete=False)
print(temp_file.name)
with open(filename, "r",encoding='utf8') as csvfile, temp_file:
    reader = csv.DictReader(csvfile)
    fieldnames = ["id", "name", "email", "sent"]
    writer = csv.DictWriter(temp_file, fieldnames=fieldnames)
    # writer.writeheader()
    for row in reader:
        writer.writerow({
            "id":row["id"],
            "name":row["name"],
            "email":row["email"],
            "sent":""
        })
我得到这个错误:/

C:\Users\Arafat\AppData\Local\Temp\tmpwgkcslas
Traceback (most recent call last):
  File "C:\Users\Arafat\Desktop\30dpython\hungry_data.py", line 49, in <module>
    "sent":""
  File "C:\Users\Arafat\AppData\Local\Programs\Python\Python36-32\lib\csv.py", line 155, in writerow
    return self.writer.writerow(self._dict_to_list(rowdict))
  File "C:\Users\Arafat\AppData\Local\Programs\Python\Python36-32\lib\tempfile.py", line 483, in func_wrapper
    return func(*args, **kwargs)
TypeError: a bytes-like object is required, not 'str'
C:\Users\Arafat\AppData\Local\Temp\tmpwgkcslas
回溯(最近一次呼叫最后一次):
文件“C:\Users\Arafat\Desktop\30dpython\hunger\u data.py”,第49行,在
“已发送”:”
文件“C:\Users\Arafat\AppData\Local\Programs\Python\Python36-32\lib\csv.py”,第155行,writerow格式
返回self.writer.writerow(self.\u dict\u to\u list(rowdict))
文件“C:\Users\Arafat\AppData\Local\Programs\Python\Python36-32\lib\tempfile.py”,第483行,在func\u包装中
返回函数(*args,**kwargs)
TypeError:需要类似字节的对象,而不是“str”

错误是以二进制模式而不是文本模式打开临时文件(默认为
w+b
)的结果。将其更改为:

temp_file = NamedTemporaryFile(mode='w', encoding='utf8', delete=False)
(严格来说,编码不是必需的,但因为您在输入上指定了编码,所以在输出上指定编码是有意义的)


请参见

错误是由于以二进制模式而不是文本模式打开临时文件(默认值为
w+b
)造成的。将其更改为:

temp_file = NamedTemporaryFile(mode='w', encoding='utf8', delete=False)
(严格来说,编码不是必需的,但因为您在输入上指定了编码,所以在输出上指定编码是有意义的)


请参见

您还应该向
open()
调用添加
newline='
关键字参数,如中所述。这是因为
csv.DictReader
csv.DictWriter
使用底层的
csv.reader
csv.writer
实例来实际读取或写入文件(在Python-3.x中需要此参数)。非常感谢,它提供了完整的帮助并解决了问题:您还应该向
open()
调用中添加
newline=''
关键字参数,如中所述。这是因为
csv.DictReader
csv.DictWriter
使用底层
csv.reader
csv.writer
实例来实际读取或写入文件(以及那些在Python-3.x中需要此参数的实例)。非常感谢,它提供了全部帮助,问题得到了解决:D