使用 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/