Python有什么区别这两行?

时间:2016-03-05 20:00:41

标签: python csv newline

有人可以告诉我下面两个实例中 lineterminator='\n' newline='' 之间的区别吗?

1:

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

2:

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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

请参阅Dialect.lineterminator documentation

  

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

open() documentation

  

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