Skip to main content
 首页 » 编程设计

python之如何在 Windows 中防止 subprocess.popen 到 "get lost"

2025年05月04日6lautakyan007

我有一个奇怪的 Python(3.x) 问题:
基本上我只想创建一个计时器,它在预定义的时间调用外部程序 (.exe) -(在下面进行了简化,另外还有一个倒计时输出):

time.sleep(y) 
x=popen("pathto.exe") 

如果我测试我的代码,一切都完全按照我想要的方式运行,但仅适用于小 y。对于大 y(等待几个小时以上),Python 不执行 popen 命令(但也没有任何错误)。 popen 命令后的任何其他“正常”代码(例如我的电子邮件通知)都可以正常工作。

我不完全确定这是 Windows(我在 64 位 Windows 7 上工作,禁用了我知道的所有节能功能)还是 Python 问题,但到目前为止找不到解决方案:
我为 popen 尝试了几个额外的参数(Shell/no Shell 等),并尝试在等待期之前打开程序/定义 X,然后再次关闭它,但不幸的是没有解决这个问题。

非常感谢!

编辑:更详细的代码示例:

while 1: 
    if time.mktime(trade2)<=time.time(): 
 
        break 
 
    else: 
        dif=time.mktime(trade2)-time.time()  # this is just for a visible countdown 
        aus=time.gmtime(dif) 
        sys.stdout.flush() 
        print("\b\b\b\b\b\b\b\b\b", end="\r") 
        print(aus[3],aus[4],aus[5], sep=":",end="") 
        time.sleep(0.5) 
 
x=subprocess.Popen("c:/xyz/abc.exe") 
print("Sending Mail...") 

print() 总是按预期执行,只有在倒计时少于大约 1-2 小时时才会打开。

请您参考如下方法:

sleep 没有保证的醒来时间。 According to the docs sleep 时间可能比请求的时间更长或更短。我有 answered这个问题之前在 SO 上,有其他选择。