【问题标题】:Python whats the difference between these 2 lines?Python 这两条线有什么区别?
【发布时间】:2016-03-05 20:00:40
【问题描述】:

谁能告诉我以下 2 个实例中 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 文件时,两者的输出结果相同...

【问题讨论】:

  • 你试过阅读文档吗?
  • @MartijnPieters 我有

标签: python csv newline


【解决方案1】:

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

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

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

Dialect.lineterminator documentation

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

还有open() documentation:

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

【讨论】:

  • 您认为最适合使用的任何人?
  • @pythontamer:使用newline=''。然后,您仍然可以指示 CSV 模块使用不同的行终止符在此之上
猜你喜欢
  • 2017-04-06
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 2013-08-08
  • 2022-11-18
相关资源
最近更新 更多