我正在尝试向旧的csv文件添加新行。基本上,它在我每次运行Python脚本时都会更新。
现在,我将旧的csv行值存储在一个列表中,然后删除csv文件并使用新的列表值重新创建它。
想知道有没有更好的方法。
发布于 2010-03-02 22:25:51
with open('document.csv','a') as fd:
fd.write(myCsvRow)
使用'a'
参数打开文件允许您附加到文件的末尾,而不是简单地覆盖现有内容。试试看。
发布于 2016-06-06 17:46:15
我更喜欢这种解决方案,使用标准库中的csv
模块和with
语句,以避免使文件处于打开状态。
关键的一点是在打开文件时使用'a'
作为附加。
import csv
fields=['first','second','third']
with open(r'name', 'a') as f:
writer = csv.writer(f)
writer.writerow(fields)
如果你使用的是Python 2.7,你可能会在Windows中遇到多余的新行。您可以尝试使用'ab'
而不是'a'
来避免它们,然而,这会导致您在Python3.6中使用TypeError: a bytes-like object is required, not 'str' in python and CSV。按照Natacha的建议,添加newline=''
将导致a backward incompatibility between Python 2 and 3。
发布于 2019-02-06 19:52:03
如果文件存在且包含数据,则可以自动为csv.DictWriter
生成fieldname
参数:
# read header automatically
with open(myFile, "r") as f:
reader = csv.reader(f)
for header in reader:
break
# add row to CSV file
with open(myFile, "a", newline='') as f:
writer = csv.DictWriter(f, fieldnames=header)
writer.writerow(myDict)
https://stackoverflow.com/questions/2363731
复制相似问题