繁体   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