将CSV文件作为列表导入Python的问题

时间:2013-11-24 05:55:53

标签: python html python-2.7 beautifulsoup

我使用Beautiful Soup将一个url列表生成一个名为MasterList的Python列表,我想将此列表保存为文本或.csv文件,然后将其作为列表导入其他Python抓取脚本可以迭代并喂入Beautiful Soup。我不想使用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>

我应该补充一点,我在Mac OSX 10.7.5上使用Python Ver 2.7.3,并且我安装了最新版本的csv模块。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您应该显式关闭文件对象或更好地使用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)
相关问题