Python 脚本在几个小时后停止
Posted
技术标签:
【中文标题】Python 脚本在几个小时后停止【英文标题】:Python script stops after a few hours 【发布时间】:2019-05-09 11:39:18 【问题描述】:我有一个 Python 3 脚本运行从 Web 下载图像的内容,但它会在几个小时后停止,我不知道为什么。 我在 .csv 文件中有 URL,它使用 csv 文件第 1 列中提供的名称保存图像。
我已经尝试关闭“打印(url)”,因为我认为这可能在某个时刻占用了太多内存,但这并没有成功。
这是我的脚本:
import csv
import requests
print ('download.py map 3_new')
with open('3.csv') as csvfile:
csvrows = csv.reader(csvfile, delimiter=';', quotechar='"')
for row in csvrows:
filename = row[0]
url = row[1]
#print (url)
result = requests.get(url, stream = True)
if result.status_code == 200:
image = result.raw.read()
open(filename,"wb").write(image)
【问题讨论】:
【参考方案1】:这很有可能是由于在将图像保存到硬盘后没有关闭文件造成的。尝试这样做:
import csv
import requests
print ('download.py map 3_new')
with open('3.csv') as csvfile:
csvrows = csv.reader(csvfile, delimiter=';', quotechar='"')
for row in csvrows:
filename = row[0]
url = row[1]
#print (url)
result = requests.get(url, stream = True)
if result.status_code == 200:
image = result.raw.read()
with open(filename,"wb") as f:
f.write(image)
【讨论】:
我会试试的,我现在正在运行命令。让我们看看它的作用。无论如何感谢您的回答! 这似乎不起作用。我运行了 6 个 python 命令,它们都执行相同的操作(第一个在 1.csv 上,第二个在 2.csv 上......等等)。目前6个中的4个还在运行,另外两个无故关闭。 URL 很好,因为当我从它停止的 URL 重新开始时,它会毫无问题地下载图像。 不知何故我不相信没有理由过早完成;)如果没有错误,那么脚本实际上可能遍历了 csv 文件中的所有 url,但由于某种原因状态代码是除了 200 并且您没有检查它,也没有尝试在失败的情况下重复下载? 我也确信提前结束一定是有原因的。老实说,我不相信脚本会遍历所有 URL,因为它会在文件的 20% 处停止,如果你在它停止的地方再次启动它,它就会像它应该的那样继续。确实,在失败的情况下我不会重复下载,但如果我将计算机与互联网断开一两分钟,然后再次连接,脚本会在它结束的地方再次继续。 好吧,无论如何,看起来您只需要添加一些错误处理。如果是关于重试建立连接urllib3.util.retry 模块可能会有所帮助。如果您遇到其他错误,请使用try
/except
块以最适合您的方式处理它们(等待/重试下载/未下载的日志文件/等)以上是关于Python 脚本在几个小时后停止的主要内容,如果未能解决你的问题,请参考以下文章
VS2010编写的WinForm程序,在调试运行了几个小时候后弹出: 正在停止调试,但尚未完成你可以强制立即停止