2017-03-06 128 views
-1

我試圖從特定文件夾中的每個csv文件中打印出特定行(第5行)。出於某種原因,它會爲第一個文件返回正確的第五行,但是在其餘所有內容中都會出現混亂。我認爲它的工作在某些類型的循環,但我不能完全弄清楚爲什麼/什麼/如何:從許多csv文件中讀取特定行,python

for file in files: 
     j = 1 
     with open(file,'rU') as csvfile: 
      csv_reader = csv.reader(csvfile, delimiter = ',', quotechar ='|') 
      for row in csv_reader: 
       if j is 5: 
        print row 
       j += 1 
+0

'j被5'是壞的。做'j == 5'。以及下一個文件有什麼問題? –

+1

當'j == 5'時你應該'break',因爲這個文件沒什麼別的。 –

+0

感謝你和Patrick。只是好奇,爲什麼'j是5'壞? –

回答

1
for file in files: 
    with open(file, newline='') as f: 
     r = csv.reader(csvfile, delimiter = ',', quotechar ='|') 
     for i, row in enumerate(r, start=1): 
      if i == 5: 
       print(row) 
       break 

不要使用j is 5。使用enumerate手動記錄計數器時,很難出錯。

0

好了,所以我改變

csv_reader = csv.reader(csvfile, delimiter = ',', quotechar ='|') 

csv_reader = csv.reader(csvfile) 

,並奇蹟般地工作...

+1

也許你在數據中有一些你沒有考慮到的東西? –

+0

我該如何檢查? –

+0

如果您使用的是Windows,請在文本編輯器中打開該文件,使用'|'選擇'Ctrl-F'。如果你在linux上,你可以'egrep'\' filename'來查看所有帶有'|'的行 –