许多关于编写 csv 文件的教程都将模式设置为"wb",为什么?



示例:用Python写入csv文件

with open('StockPrice.csv', 'wb') as f:

为什么我们需要二进制打开csv文件?

这只是习惯,还是有一个用例,当二进制文件是必要的csv文件?

在Windows上使用csv模块写入输出时必须使用模式"wb",因为csv模块将将行尾写入rn,无论您在哪个平台上运行

如果你在Windows上运行,并且你有一个以模式"w"打开的文件,Python将在每次你写换行符时添加一个额外的回车符。因此,如果您使用模式为"w"的文件使用csv模块编写输出,那么您最终将获得rrn行结束符,因为Python和csv模块都添加了回车字符。

下面是一个演示结果的快速程序。请注意,我们以二进制模式("rb")读取文件,以防止Python在读取文件时将rn替换为n:

import csv
with open("output.csv", "w") as f:
    w = csv.writer(f)
    w.writerow([1,2,3,4])
    w.writerow([5,6,7,8])
with open("output.csv", "rb") as f:
    print repr(f.read())

当我在Windows上运行此命令时,我得到以下输出:

'1,2,3,4rrn5,6,7,8rrn'

最新更新