2017-10-20 72 views
1

我有一個簡單的場景,我將CSV中的分隔符從;(分號)更改爲,(逗號)。下面是代碼將分號從分號轉換爲CSV中的逗號?

代碼:

import csv 
semicolonin = csv.reader(r"C:\pyscripts\1.csv", delimiter=';') 
commaout = csv.writer(r"C:\pyscripts\1.csv", delimiter=',') 
for row in semicolonin: 
    commaout.writerow(row) 

但是我收到一個錯誤。我錯過了什麼嗎?

TypeError: argument 1 must have a "write" method 

在執行線commaout = csv.writer(r"C:\pyscripts\1.csv", delimiter=',')

+3

您通過一個文件路徑,而不是一個文件對象。 'csv.reader(打開(r「C:\ pyscripts \ 1.csv」),delimiter =';')' –

+0

您想爲輸出使用不同的文件名。除非丟失所有數據是你的目標。上面代碼中的 –

回答

1

你必須提供一個文件對象的作家方法,像這樣:

import csv 
with open(r"C:\pyscripts\1.csv") as in_file, open(r"C:\pyscripts\1.csv", 'w') as out_file: 
    semicolonin = csv.reader(in_file, delimiter=';') 
    commaout = csv.writer(out_file, delimiter=',') 
    for row in semicolonin: 
     commaout.writerow(row) 
+0

只輸出csv文件中的路徑名稱,沒有其他內容。 – Alex

+0

正確,與作者同樣的問題。您必須將文件對象提供給csv.reader,而不僅僅是路徑。 – Lumen

+0

那麼這裏的解決方案是什麼? – Alex