python - 如何附加到 CSV 文件?

标签 python csv

使用 Python 附加 CSV 文件,我每隔一行获取数据。 我该如何解决?

import csv

LL = [(1,2),(3,4)]

Fn = ("C:\Test.csv")
w = csv.writer(open(Fn,'a'), dialect='excel')
w.writerows(LL)

C:\test.csv 打开后如下所示:

1,2

3,4

1,2

3,4

最佳答案

追加与问题无关;请注意前两行(来自原始文件的行)也是双倍行距。

真正的问题是您以文本模式打开文件。

不管你信不信,CSV 是一种二进制格式。 csv 模块按预期将误导性命名的“lineterminator(应为“rowseparator”)编写为 \r\n 但随后 Windows C 运行时启动并替换 \n\r\n 这样你在行之间有 \r\r\n 。当你用 Excel “打开” csv 文件时,它会变得困惑

始终以二进制模式('rb'、'wb'、'ab')打开 CSV 文件,无论您是否在 Windows 上运行。这样,即使在 *x 框上,您也将获得预期的行分隔符 (CR LF),您的代码将是可移植的,并且数据中嵌入的任何换行符都不会更改为其他内容(在写入时)或导致戏剧性(在输入时) ,当然前提是它们被正确引用)。

其他问题:

(1) 不要把你的数据放在你的根目录(C:\)。 Windows 在 1980 年代从 MS-DOS 继承了分层文件系统。使用它。

(2) 如果您必须在代码中嵌入硬连线文件名,请使用原始字符串 r"c:\test.csv" ... 如果您有 "c:\test.csv" '\t' 将被解释为 TAB 字符; \r\n

有类似的问题

(3) Python 手册中的示例更倾向于简洁而不是健壮的代码。

不要这样做:

w = csv.writer(open('foo.csv', 'wb'))

这样做:

f = open('foo.csv', 'wb')
w = csv.writer(f)

然后当你完成后,你有可用的 f 这样你就可以执行 f.close() 来确保你的文件内容被刷新到磁盘。更好的是:阅读新的 with 语句。

关于python - 如何附加到 CSV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4249185/

相关文章:

java - 根据字符串到长整型映射将定界字符串转换为定界长整型

python - 如何使用 Python 3.7.4 和 beautifulsoup4 抓取 Cyber​​ix3D 网站 (http ://www. 3dgamemaker.com) 上游戏的所有 URL 链接?

c++ - Python 列表等同于 C++?

python - 比较具有相同 id 的 Pandas 数据帧的几个值

csv - 如何更新 csv::ByteRecord 中的字段?

java - Java中设置多种格式的系统剪贴板

database - csv 到核心数据

python - 使用 python 3.x 计算与特定正则表达式模式匹配的行数

python - 类似 HTML 的布局

python - python 的 csv 阅读器可以留下引号吗?