首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将新行追加到旧的csv文件python

将新行追加到旧的csv文件python
EN

Stack Overflow用户
提问于 2010-03-02 22:23:34
回答 5查看 557.3K关注 0票数 260

我正在尝试向旧的csv文件添加新行。基本上,它在我每次运行Python脚本时都会更新。

现在,我将旧的csv行值存储在一个列表中,然后删除csv文件并使用新的列表值重新创建它。

想知道有没有更好的方法。

EN

回答 5

Stack Overflow用户

发布于 2010-03-02 22:25:51

代码语言:javascript
复制
with open('document.csv','a') as fd:
    fd.write(myCsvRow)

使用'a'参数打开文件允许您附加到文件的末尾,而不是简单地覆盖现有内容。试试看。

票数 300
EN

Stack Overflow用户

发布于 2016-06-06 17:46:15

我更喜欢这种解决方案,使用标准库中的csv模块和with语句,以避免使文件处于打开状态。

关键的一点是在打开文件时使用'a'作为附加。

代码语言:javascript
复制
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

票数 207
EN

Stack Overflow用户

发布于 2019-02-06 19:52:03

如果文件存在且包含数据,则可以自动为csv.DictWriter生成fieldname参数:

代码语言:javascript
复制
# 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)
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2363731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档