2017-09-08 59 views
0

我有這個錯誤,我不知道爲什麼我得到它。 我遵循了我的Python手冊中的步驟,並得到了這個。如果他們有奇怪的字符,我嘗試清除第8列和第9列中的文件。 如果有人可以幫助我,請告知。Python錯誤io.UnsupportedOperation:不可讀

的錯誤出現在代碼行:for row in csv.reader(f):

請在下面找到我的代碼:

import csv 


file = '/Users/cohen/Desktop/sdn-2.csv' 
newstring = "null" 
newinteger = int(0) 
with open(file, 'r+') as f: 
    for row in csv.reader(f): 
     if row[7] =="-0-": 
      row[7] = newinteger 
     if row[8] == "-0-": 
      row[8] = newinteger 
f.close() 

***以後編輯我改變上面的代碼,但沒有做任何事情不與0

+0

'open(file,'w')'您打開文件進行寫入,而不是讀取。 –

+0

即使你修復了「open」錯誤,你仍然有一個全面的邏輯問題 - 分配給一行不會把這個改變寫回到這個文件。 –

+0

可能最好是讀取數據,根據需要清理csv行,將清理過的行寫入新文件,然後刪除原始文件並將新文件重命名爲原始名稱。 –

回答

0

編輯替換-0-

您需要打開與R +的文件。使用w僅用於寫入,r +用於寫入和讀取訪問。

with open(file, 'r+') as f: 

使用==行[7] == newinteger正在呼叫相等操作。它檢查左右操作數的值是否相同。您想要使用=來設置新值。

row[7] = newinteger 
0

其他的東西,這些我之前也說,但我認爲這是錯誤從字符串"-0-"周圍的括號。也許第一次使用的空間也是如此。

if row[7] ==("-0-"): 

應該是: 如果行[7] == 「-0-」:

if row[8] == ("-0-"): 

應該是: 如果行[8] == 「-0-」:

0

這是我的解決方案:創建一個輸出文件並寫入它,我從源文件中讀取的內容。有點奇怪,因爲在VBA中更容易做到這一點,然後在python中,但這是來自pythn的csv模塊中的解決方案。我不喜歡我必須創建另一個文件,而且我不能基本上在幫助文件中寫入,而且我必須寫入一個全新的文件,但這是生活....如果有人有更好的方法,我我開放給新的。

希望別人會使用這段代碼。

import csv 
newstring = "null" 
newinteger = (0) 
with open('/Users/cohen/Desktop/sdn-4 2.csv', 'r') as file1, open('/Users/cohen/Desktop/new_sdn.csv', 'w', newline='') as file2: 
    reader = csv.reader(file1, delimiter=',') 
    writer = csv.writer(file2, delimiter=',') 

    for row in reader: 
     replaced1 = row[7].replace('-0-', newstring) 
     row[7]=replaced1 
     replaced2 = row[8].replace('-0-', newinteger) 
     row[8]=replaced2 
     writer.writerow(row)