gpt4 book ai didi

python - 一会儿用 Python 中的 np.save 写一个大文件 True Loop

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:56 25 4
gpt4 key购买 nike

我正在使用 while True 循环抓取网站,然后使用 np.savez 将所有数据保存到一个文件中。我想处理 npz 文件,但文件更新速度比我复制它要快。这是我的代码:

while True:
time.sleep(1.5)
for post in new:
all_posts.append(post)
np.savez('records.npz', posts)
new = other_site.get_next()

最初为了处理我正在抓取的数据,我只是复制文件,但现在文件太大,每次都会损坏。我可以从头开始重新启动此过程并减少保存次数,这样我就有更多时间进行复制,但我想知道是否有办法恢复我写入的数据。我的另一个想法是截断文件的末尾,使其看起来仍然像一个 npz 文件并且 python 可以读取它,但我不知道这是否可能。

最佳答案

为了避免您的文件被践踏或覆盖,为什么不写一些 python 代码来避免这种情况呢?例如,您可以为每个站点保存到一个新文件,并将这些文件收集到一个目录中;

import os

os.mkdir('scraped_sites')

while True:
time.sleep(1.5)
for post in new:
all_posts.append(post)

# create a unique file path
save_file = os.path.join('scraped_sites', 'records_%s.npz' % other_site)
np.savez(save_file, all_posts)

new = other_site.get_next()

这样你的文件将永远不会被破坏,所以你不必担心在它被再次写入之前处理它。如果您不喜欢命名文件的想法,请查看 tempfile

此外,while True可能很危险,因为你的循环永远不会退出 - 我假设你只是为了简洁而写了这个,但最好有一个 breakwhile <conditional这样您就不会在文件写入过程中不小心强制循环退出。

关于python - 一会儿用 Python 中的 np.save 写一个大文件 True Loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13513950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com