有人可以告诉我下面两个实例中 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文件时,两者都会产生相同的输出......
答案 0 :(得分:5)
这两个选项不在Linux或Mac上生成相同的文件输出。只有在Windows上才能看到相同的输出。
第一个指示csv
模块将\n
写为行之间的行终止符。它正在写入的文件对象处于文本模式,然后将该终结符转换为平台默认。 Linux或Mac上的默认值为\n
,但Windows上为\r\n
。
第二部分指示文件对象不改变写入它的行结尾(否则它将翻译行分隔符)。 csv
模块保留默认值,因此它会在行之间写入两个\r\n
个字符。结果是,无论平台如何,所有行都以\r\n
终止。
请参阅Dialect.lineterminator
documentation:
用于终止
writer
生成的行的字符串。它默认为'\r\n'
。
将输出写入流时,如果换行符为None,则写入的任何
'\n'
个字符都将转换为系统默认行分隔符os.linesep
。如果换行符为''
或'\n'
,则不会进行翻译。如果换行符是任何其他合法值,则写入的任何'\n'
个字符都将转换为给定的字符串。