Python有什么区别这两行?

pyt*_*mer 0 python csv newline

谁能告诉我之间的差异lineterminator='\n',并newline=''在下面的2个实例?

1:

data=[person,age]
with open(document.csv, 'a') as file:
    writing = csv.writer(file, lineterminator='\n')
    wr.writerow(data)
Run Code Online (Sandbox Code Playgroud)

2:

data=[person,age]
with open(document.csv, 'a', newline='') as file:
    writing = csv.writer(file)
    wr.writerow(data)
Run Code Online (Sandbox Code Playgroud)

查看csv文件时,两者都会产生相同的输出...

Mar*_*ers 5

这两个选项在Linux或Mac上不会生成相同的文件输出.只有在Windows上才能看到相同的输出.

第一个指示csv模块\n作为行之间的行终止符写入.它正在写入的文件对象处于文本模式,然后将该终结符转换为平台默认值.默认设置\n在Linux或Mac上,但它\r\n在Windows上.

第二部分指示文件对象不改变写入它的行结尾(否则它将转换行分隔符).该csv模块保留默认值,因此它将在行\r\n之间写入两个字符.结果是\r\n无论平台如何都终止所有行.

查看Dialect.lineterminator文档:

用于终止由生成的行的字符串writer.它默认为'\r\n'.

open()文件:

将输出写入流时,如果换行为 None,则'\n'写入的任何字符都将转换为系统默认行分隔符os.linesep.如果换行是'''\n',则不进行翻译.如果换行符是任何其他合法值,则'\n'写入的任何字符都将转换为给定的字符串.