【发布时间】:2022-01-28 06:22:04
【问题描述】:
我正在学习如何使用内置的 csv 模块写入 CSV 文件。
我使用以下代码打开文件:
file_to_output=open('to_save_file.csv', mode='w', newline='')
然后我创建一个 csv writer 对象:
csv_writer = csv.writer(file_to_output, delimiter=',')
然后我用writerow写一行:
csv_writer.writerow(['a', 'b', 'c'])
现在,这个函数返回7。
很多帖子说这个数字是写入的字符数,但是当我关闭并检查文件时,只有5字符写入文件,即a,b,c。
这个数字代表什么?
【问题讨论】:
-
我猜你是在 Windows 机器上运行你的测试。额外的两个字符是行终止指示符,在 Windows 上是
\r\nCRLF,所以writerow()确实返回了写入的字节数。 -
刚刚检查过,即使在 Linux 上,
csv模块也使用CRLF作为线路终止指示符。 -
我使用的是 MAC 操作系统
-
不管怎样,
csv.writer的默认dialect是excel,它使用CRLF作为行终止指示符。你可以玩转dialect='unix',然后writerow将返回6,因为在类Unix 系统中,行终止指示符只是LF,占一个额外的字符。