2014-08-31 96 views
2

問題:Python3 DictWriter使用CRLF,而不是LF在Linux上

在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$ 

說明:

  • 現有文件的fileformat是「unix」,而不是「dos」。
  • 我已經嘗試將newline設置爲無(默認值)和'\ n'(即使這應該是不必要的,因爲默認值是os.linedep,在Linux上它已經是'\ n'),但結果是一樣的。

回答

4

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

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