我正在编写一个程序,在凌晨3点,它会从文件中读取所有内容并逐个从链接中下载文件,如果是早上7点,则停止这样做(暂停下载)
但我的问题是如果我使用os.system("wget name")
我无法阻止它,我无法在while循环中放置一个标记来检查它,因为os.system()
赢了& #39; t完成直到下载完成。我无法想到任何其他方式。
我的网络不稳定所以我假设我必须使用wget
,我听说urllib
但是我不确定它是否适用于我的不稳定连接!
我计划在我的覆盆子Pi上运行ArchLinux
答案 0 :(得分:1)
您有一个要在上午7点停止的子流程。 Popen.wait
有一个超时,所以你要做的就是找出超时并使用它。
import subprocess
import datetime
import time
now = datetime.datetime.now()
stopat = now.replace(hour=7, minute=0, second=0, microsecond=0)
delta = stopat.timestamp() - now.timestamp()
if delta > 0:
proc = subprocess.Popen("wget name", shell=True)
try:
proc.wait(delta)
except subprocess.TimeoutExpired:
proc.terminate()
try:
proc.wait(2)
except subprocess.TimeoutExpired:
proc.kill()