Python3 DictWriter在Linux上使用CRLF代替LF

时间:2014-08-31 11:58:58

标签: python linux python-3.x

问题:

在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设置为无(默认设置)和' \ n'同样也是不必要的(因为默认值是os.linedep,它已经是Linux上的' \ n'),但结果是一样的。

1 个答案:

答案 0 :(得分:4)

通过指定lineterminator,您可以控制它。

test_csv = csv.DictWriter(
    test_f,
    delimiter='|',
    lineterminator='\n',  # <--------
    fieldnames=['1', '2'])