2017-03-02 69 views
-2

我有兩個Python程序。一個客戶的信息寫入CSV。另一個訪問它。當第一次寫入時,我可以打開CSV文件(在Excel中)並查看它是否已正確寫入。但是,對於其他程序訪問CSV文件中的新數據,我必須手動打開它並將其保存(在Excel中),否則它不起作用。有誰知道這可能是爲什麼?寫入CSV並保存文件

編輯:

這樣寫它(從第一個節目):

f = open('details.csv', 'at', newline=''); csv_f = csv.reader(f) 
csv_w.writerow(clientList) 
f.close() 

這讀取它(第二方案):

f = open('details.csv', 'rt', newline=''); csv_f = csv.reader(f) 
for row in csv_f: 
    name.append(row[0]) 

想,當我得到這個錯誤將行[0]追加到列表中。

Traceback (most recent call last): 
    File "C:\Users\Dan\Desktop\Garden Centre\work.py", line 8, in <module> 
    name.append(row[0]) 
IndexError: list index out of range 
+2

如果您向我們顯示您的代碼,可能對您有所幫助。 :) – sangheestyle

回答

0

我已經看到了一些源於不同平臺行結束的問題。在Python 2裏,你可以試試「萬能行尾」文件的閱讀模式:

with open('data.csv', 'rU') as f: 
    for row in csv.reader(f): 
     print row 

因爲Excel不經常使用的舊的Mac(\r)和Windows(\r\n)標準,可在csv模塊的方式獲得尤其是,在Unix或Mac平臺上,Python預計Unix標準行結束(\n)。 Python 3通常比較聰明(和其他文件/字符串編碼問題),因此通常不需要特殊模式。

+0

我嘗試了你的建議,但我已經在Python 3上,所以我不確定它有什麼不同,因爲我仍然遇到同樣的錯誤。 –

+0

在Python 3中,IME與U模式不會有很大的區別。你甚至可能會得到一個棄用警告。但那是什麼'newline ='''參數?這看起來很可能會妨礙你。 –

0

我在嘗試幾小時後找到了答案。在Excel中,「空行」中的每個項目在任何行中包含最大數量的項目。 Python不會像CSV那樣將其寫入CSV,而是隻在空行上的一個項目包含None。當它遍歷每一行時,沒有第一項要添加到空行上的列表。 我不得不手動添加一個額外的''到第一個程序編寫的列表中。