1

我正在使用 subprocess.Popen 来调用控制台应用程序。控制台应用程序本身调用另一个子进程来执行下载操作。父进程在调用子进程后退出。

在命令提示符下手动运行脚本时,我可以获得子进程的输出。

但是 subprocess.Popen 在系统环境中运行脚本时被挂起(提交后挂钩)。子进程没有退出。

 p1 = subprocess.Popen([Application,arg1, arg2, arg3], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
 Down_out = p1[0]
 Down_Err = p1[1]

提前致谢

4

1 回答 1

0

arguments从您提供的信息中很难说,但是当它们应该被拆分为列表中的多个元素时,它可能是一个具有多个参数的字符串。如果您将所有参数组合成一个字符串,您正在执行的程序的行为将不会是您所期望的。

例如:

>>> from subprocess import Popen
>>> Popen(['touch', '/tmp/testing /tmp/foo']).communicate()
touch: cannot touch ‘/tmp/testing /tmp/foo’: No such file or directory
(None, None)
>>> Popen(['touch', '/tmp/testing', '/tmp/foo']).communicate()
(None, None)

在第一个中,'/tmp/testing /tmp/foo'是一个字符串。

第二,它是列表中的两个独立元素。正如预期的那样运行。

我猜你的挂起是因为无效的论点。

于 2013-12-11T08:12:05.883 回答