追加新的行到旧的csv文件python
我正在尝试向我的旧csv文件添加一个新行。 基本上,每次运行Python脚本时都会更新。
现在,我将旧的csv行值存储在列表中,然后删除csv文件并使用新的列表值重新创build它。
想知道有没有更好的方法来做到这一点。
fd = open('document.csv','a') fd.write(myCsvRow) fd.close()
使用'a'
参数打开文件可以将文件追加到文件末尾,而不是简单地覆盖现有内容。 试试看
我更喜欢使用标准库中的csv
模块和with
语句的解决schemewith
以避免打开文件。
关键是在打开文件时使用'a'
进行追加。
import csv fields=['first','second','third'] with open(r'name', 'a') as f: writer = csv.writer(f) writer.writerow(fields)
Windows中可能会遇到多余的新行。 你可以试着避免使用'ab'
而不是'a'
。
你用“a”而不是“w”模式打开文件?
请参阅Python文档中的读写文件
7.2。 读写文件
open()返回一个文件对象,最常用于两个参数:open(filename,mode)。
>>> f = open('workfile', 'w') >>> print f <open file 'workfile', mode 'w' at 80a0960>
第一个参数是一个包含文件名的string。 第二个参数是另一个string,它包含几个描述文件使用方式的字符。 模式只能读取文件'r',只能写入'w'(同名的现有文件将被删除),'a'打开要附加的文件; 写入文件的任何数据都会自动添加到结尾。 'r +'打开文件读取和写入。 模式参数是可选的; 如果省略“r”将被假定。
在Windows上,附加到模式的“b”以二进制模式打开文件,所以也有像“rb”,“wb”和“r + b”这样的模式。 Windows上的Python区分文本和二进制文件; 数据读取或写入时,文本文件中的行尾字符会自动稍微改变。 这种对文件数据的后台修改对于ASCII文本文件来说是很好的,但是它会像JPEG或者EXE文件那样破坏二进制数据。 读取和写入这些文件时要非常小心地使用二进制模式。 在Unix上,在模式中附加一个'b'并不会造成什么影响,所以你可以在所有的二进制文件中使用它。