2015-11-27 27 views
-1

我目前正在一週中使用非常錯誤的互聯網服務,同時試圖爲一個項目提供在線數據。特別是,我正在訪問URL列表中的每個URL,並從每個網站中抓取特定的一段數據以放入CSV中。網址列表相當龐大(33,000多個網址),而且我發現在互聯網停機時我很難找到離開的地方。有沒有辦法快速做到這一點?這裏是我的:如何在特定的行#之後將行寫入文本文件?

def makeCSV(csv_src): 
#END_TOKEN = " __END__ENTRY__" 
with open(new_src, 'r') as f, open(csv_src, 'a') as fcsv: 
    count = 40 
    for i, url in enumerate(f): 
     while i >= count and count < len(f.readlines()): 
      count += 1 
      wr = csv.writer(fcsv, quoting=csv.QUOTE_ALL) 
      speaking, studying, entry, incorrect, correct = mineLearnerData(url) 
      data = [speaking, studying, incorrect, correct] 
      wr.writerow(data) 
      #f2.write(str(entry + END_TOKEN) + '\n') 
      print(count) 
f.close(); fcsv.close() 

'f'表示我正在使用的URL文件。我正在將該文件中的URL的特定信息發送到指定的CSV文件路徑。 'Count'表示要查看的下一個URL。理想情況下,我也想能夠使用行len(fcsv.readlines()),但我不斷收到ascii錯誤。

另外,由於我對數據收集&清潔過程完全陌生,因此我願意提供有關有效方法的建議。

+0

有時,讀取所有行到內存,添加新行並將所有行寫入文件會更加容易。 – furas

回答

0

不是不止一次調用f.readlines()

CSV不是適用於修改的格式。你只能用它來導入/導出數據。

對於您的用例,我會使用一個輕量級的進程內數據庫,如提供事務和崩潰恢復的sqlite3。

相關問題