Python3 DictWriter在Linux上使用CRLF而不是LF
问题:
在Python 3中,我使用csv.DictWriter向一个已有的文件添加一行数据。但是,文件中的换行符是CRLF,而我期待的是LF。
代码示例:
#!/usr/bin/env python3
import csv
with open("test.csv", 'a', newline='') as test_f:
test_csv = csv.DictWriter(test_f, delimiter='|', fieldnames=['1', '2'])
test_csv.writerow({'1': "test1", '2': "test2"})
预期结果:
$ cat -e test.csv
test1|test2$
实际结果:
$ cat -e test.csv
test1|test2^M$
备注:
- 这个已有文件的格式是“unix”,而不是“dos”。
- 我尝试过将newline设置为None(默认值)和'\n'(即使这样做也应该不必要,因为默认值是os.linedep,在Linux上已经是'\n'),但结果还是一样。
1 个回答
6
通过指定 lineterminator
,你可以控制换行符的使用。
test_csv = csv.DictWriter(
test_f,
delimiter='|',
lineterminator='\n', # <--------
fieldnames=['1', '2'])