执行批处理fi时python子进程模块卡住

2024-04-20 11:31:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着自学用python编写代码,但遇到了一个问题。在

我使用python的subprocess模块来执行一个.bat文件,但是这个进程似乎在bat文件上卡住了。python代码当前如下所示:

import  getpass
username = getpass.getuser()
from subprocess import Popen
p = Popen("hidefolder.bat", cwd=r"C:\Users\%s\Desktop" % username)
stdout, stderr = p.communicate()
import sys
sys.exit()

bat文件如下所示:

^{pr2}$

有没有一种方法可以终止子进程,即使python脚本在继续之前等待子进程终止?或者是从子进程中的问题开始? 提前谢谢你。在


Tags: 模块文件代码fromimport进程sysusername
1条回答
网友
1楼 · 发布于 2024-04-20 11:31:59

您需要将subprocess.PIPE用于stdoutstderr,否则无法通过Popen.communicate获取它们,这就是进程被卡住的原因。在

from subprocess import Popen, PIPE
import  getpass
username = getpass.getuser()
p = Popen("hidefolder.bat", cwd=r"C:\Users\%s\Desktop" % username, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
import sys
sys.exit()

相关问题 更多 >