2014-07-10 99 views
-2

我在Python 2.7.3工作,並試圖讀取csv文件PNG_Files_R.csv包含以下信息:名單(),但「海峽」對象不是在python可調用錯誤

"Group","Sample","T0" \n 
"HereausCPC","61","sample06_1_T0-Subvolume-resample_scale-1_x.png" 

我想除了第一行以外,按單元格逐行讀取文件。但我從來沒有使用列表()來獲得行數,它報告'海峽「對象不是可調用的」

import Image 
import os,csv 
path_working="/media/Research/TEST_Program/PNG_Files" 
path_now=os.getcwd() 
os.chdir(path_working) 
csv_filename='PNG_Files_R.csv' 
f = open('PNG_Files_R.csv', 'rb') 
reader = csv.reader(f) 
rows = list(csv.reader(f)) 
lineNum = len(rows) 
for rowNum in range(1,lineNum): 
    print rows[rowNum][0] 

我重新啓動蟒蛇,然後沒有錯誤

感謝很多提前跳出!

+1

你真的需要在問題中正確地設置你的代碼格式,特別是如果是空格非常關鍵的Python。 – TheSoundDefense

+2

這不是完整的相關代碼嗎? – glglgl

+0

對於格式問題感到抱歉,我確實在每個代碼前面放了4個空格,但代碼塊並不代表它應該如此。請告訴我你是如何編輯它的? – user3817800

回答

5

您可能以前曾將字符串值分配給同一模塊中名爲list的變量。爲變量選擇一個不同的名稱,問題就會消失。

+0

我的腳本非常簡短,只導入,然後是那些代碼。也許你的意思是'list(csv.reader(f))'? – user3817800

+0

@ user3817800請編輯該問題以包含錯誤的完整回溯。 – user4815162342

+0

謝謝,我從這個週末開始使用python,並嘗試了很多東西,但忘記清理變量列表。 – user3817800

1

您可能正在使用list作爲變量名稱。

In [1]: list = "foo" 

In [2]: list(1,2,3) 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-2-1860a40b9973> in <module>() 
----> 1 list(1,2,3) 

TypeError: 'str' object is not callable 
2

您可以創建一個閱讀器,並通過撥打next()跳過第一行。

csv_filename='PNG_Files_R.csv' 
with open(csv_filename, "rb") as f: 
    reader = csv.reader(f) 
    reader.next() 
    for row in reader: 
     print row[0] 

如果你真的想要得到的所有行到值列表:

csv_filename='PNG_Files_R.csv' 
with open(csv_filename, "rb") as f: 
    reader = csv.reader(f) 
    reader.next() 
    rows = list(reader) 

然後你就可以通過索引訪問記錄,如rows[3](如果有這麼多的記錄)。

這個解決方案是無論如何,假設你沒有在你以前的代碼中重新定義list,它應該從 csv文件中收集所有記錄,忽略第一個標題行。

+0

感謝迭代器是非常好的方法,但是我需要稍後調用一些特定的行。 – user3817800

+0

@ user3817800添加修改,其中提供了所有行的列表。 –

+0

這是更優雅和有效的,謝謝你的更新,我會用它。但我在這個腳本之前重新定義了'list'。 – user3817800

相關問題