什么是csv的open()函数中'rb'和'rU'之间的区别

The*_*ude 1 python csv python-3.x

我想知道之间有什么区别:

with codecs.open('xxxx.csv', 'rU') as h:
Run Code Online (Sandbox Code Playgroud)

with codecs.open('xxxx.csv', 'rb') as h:
Run Code Online (Sandbox Code Playgroud)

我想我记得当我开始阅读.csv文件的项目时,有人说你应该使用' rb '而不是' rU ',但我似乎无法再找到它.

有谁想解释一下这个?谢谢

dec*_*eze 9

正如文档所述,U(通用换行符)模式已被弃用; 你不应该再使用它了.而是使用newline=关键字参数.

csv文档声明它更喜欢该参数'',因此open不会对换行进行任何解释并将其留给csv模块.

由于您可能希望将CSV解码为文本(而不是字节),因此在b(二进制)模式下打开它们毫无意义.

底线:解析CSV文件的常用方法是:

with open('eggs.csv', newline='') as csvfile:
    spamreader = csv.reader(csvfile)
    for row in spamreader:
        ...
Run Code Online (Sandbox Code Playgroud)

这意味着您正在使用隐式open模式rt,以便在文本模式下阅读.除非你有非常特殊的需求,否则这可能就是你想要的.以上示例代码直接来自文档.