簡體   English   中英

將CSV文件作為列表導入Python時出現問題

[英]Problems Importing CSV File as a List into Python

我使用Beautiful Soup在名為MasterList的Python列表中生成了一個URL列表,我想將此列表另存為文本或.csv文件,然后作為列表導入到其他Python抓取腳本中,以進行迭代並饋入Beautiful湯。 我不想使用pickle或將生成MaterList的函數導入到其他腳本文件中,因為生成MasterList需要很長時間,所以我只想生成一次並重復使用。 所以我使用以下命令保存了MasterList

import csv

ListCsv=csv.writer(open("MasterList.csv","w"))
ListCsv.writerow(MasterList)

並且該文件在我的目錄中顯示為.csv文件,其中填充了正確的信息。 但是,當我嘗試運行代碼時

test = csv.reader(open("MasterList.csv","r"))
test = list(test)
print(test)

我沒有任何錯誤,列表test為空。 即, print(test)命令顯示[] 我到過很多論壇,都嘗試過導入csv文件以保存為列表的各種變體,但沒有任何效果。 根據我使用的語法和方法,我將獲取並清空列表或print(test) <_csv.reader object at 0x1014c78a0>顯示<_csv.reader object at 0x1014c78a0>

我應該補充一點,我在Mac OSX 10.7.5上使用Python Ver 2.7.3,並且已經安裝了最新版本的csv模塊。 任何幫助將不勝感激。

您應該顯式關閉文件對象,或者最好使用with語句來處理文件,因為它會自動為您關閉文件,否則您實際寫入文件的數據可能尚未刷新到該對象。

演示:

>>> f = open('abc.csv', 'w')
>>> writer = csv.writer(f)
>>> writer.writerow(range(10))
>>> list(csv.reader(open("abc.csv"))) #empty result, nothing flushed to file yet.
[]
>>> f.close()             #close the file object, now the data is flushed to file
>>> list(csv.reader(open("abc.csv")))
[['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']]

更好地使用with語句:

with open('abc.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow(range(10))
with open('abc.csv') as f:
    reader = csv.reader(f)
    print list(reader)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM