2017-09-22 87 views
0

我正在嘗試讀取.csv文件中的所有數據。首先,我嘗試使用csv.reader(),但是這會跳過我的文件的第一行。我可以使用.readlines()來補救這個問題,但我想知道爲什麼這會發生在.reader()中,並且希望使其讀取我的第一行。爲什麼使用.reader()跳過第一行,而.readlines()不是?

import glob 
import csv 

new_cards = [] 
path = 'C:\\Users\\zrc\\Desktop\\GCData2\\*.asc' 
files = glob.glob(path) 


# First Method 

for name in files: 
    with open(name) as f: 
     for line in f: 
      reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE) 
      for row in reader: 
       new_cards.append(row) 
print(len(new_cards)) 


# Second Method 

for name in files: 
    with open(name) as f: 
     m = f.readlines() 
     for line in m: 
      new_cards.append(line) 

print(len(new_cards)) 
+0

做'* .asc'如何,這是一個CSV檔案? – bhansa

+0

你試過[行](https://github.com/turicas/rows)lib嗎?讓事情更容易閱讀csv和結構化數據 –

+0

@bhansa .asc是我使用的程序寫入它們的格式(它是一個文件,數據以逗號分隔)。我已經在這些文件上成功使用了csv.reader()。當我一次嘗試完成其中的很多功能時,似乎遇到了麻煩。 – jchand20

回答

3

在你的第一個功能,你不需要使用for line in f:這條線走你的第一線,然後將讀卡器從第二階段開始。

正確的方法應該是:

for name in files: 
    with open(name) as f: 
     reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE) 
     for row in reader: 
      new_cards.append(row) 
print(len(new_cards)) 

你不需要迭代中的第一個每行,因爲你已經與for row in reader: