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

kyl*_*lex 4 python

例如:在Python中写入csv文件

with open('StockPrice.csv', 'wb') as f:
Run Code Online (Sandbox Code Playgroud)

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

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

Luk*_*ard 7

在Windows上"wb"使用csv模块写入输出时必须使用该模式,因为无论您运行的是什么平台,csv模块都会写出行结束\r\n.

如果您在Windows上运行,并且您有一个打开模式的文件"w",Python每次编写换行符时都会添加一个额外的回车符.因此,如果您使用带模式的文件"w"来使用csv模块编写输出,您将最终得到\r\r\n行结尾,因为Python和csv模块都添加了回车符.

这是一个演示结果的快速程序.请注意,我们读到以二进制方式(文件"rb"),以防止Python从替换\r\n\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())
Run Code Online (Sandbox Code Playgroud)

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

'1,2,3,4\r\r\n5,6,7,8\r\r\n'
Run Code Online (Sandbox Code Playgroud)