【发布时间】:2018-08-23 23:31:22
【问题描述】:
我正在使用 beautifulsoup 从一系列网站中抓取 .csv 文件。然后我想立即在同一个脚本中使用它们并将它们存储起来以备后用。目前,当我抓取并保存文件时,脚本无法立即使用它,并且在尝试将 csv 作为数据帧加载时返回NoneType 错误。
我尝试使用
file_to_save.flush()
和
os.fsync(file_to_save.fileno())
无济于事。我也尝试在打开文件file_to_save = open(path + filename, 'wb', 0) 时不使用缓冲区,但这仍然无法正常工作。
我的代码如下(res 是请求的response.read()):
file_to_save = open(path + filename, 'wb', 0)
file_to_save.write(res)
file_to_save.flush()
os.fsync(file_to_save.fileno())
file_to_save.close()
当我重新运行脚本时,它会在文件保存时工作,并且可以在单独的函数中加载到 df 中。关于如何使文件立即可用的任何想法?
【问题讨论】:
-
调用
close后能把文件读入pandas吗? -
你是如何加载文件的?您是否尝试从刚写的文件中读取而不先回到开头?
-
@KenSyme 我只能在整个过程结束并重新启动时读取文件 - 如果我稍后在脚本中尝试在单独的函数中读取文件,它会引发
NoneType错误,因为它无法加载文件。如果我再次运行脚本,它会在文件被保存和输出时工作。 -
@DanD。在保存并关闭文件后,我正在尝试使用 pd.read_csv(file_path) 将文件加载为熊猫数据框。我不确定你所说的“回到起点”是什么意思。
标签: python pandas beautifulsoup flush fsync