问题标签 [subprocess]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
186603 浏览

python - 在 python 脚本中启动 shell 命令,等待终止并返回脚本

我有一个 python 脚本,它必须为目录中的每个文件启动一个 shell 命令:

这适用于第一个文件,但在“myscript”命令结束后,执行停止并且不会返回到 python 脚本。

我能怎么做?我必须fork()以前calling os.execlp()吗?

0 投票
7 回答
46261 浏览

python - Python, Popen and select - waiting for a process to terminate or a timeout

I run a subprocess using:

This subprocess could either exit immediately with an error on stderr, or keep running. I want to detect either of these conditions - the latter by waiting for several seconds.

I tried this:

but it just returns:

on either condition. What can I do?

0 投票
3 回答
6136 浏览

python - 使用 pythonw.exe 时 Python subprocess.call() 失败

当我使用 python.exe 运行它时,我有一些 Python 代码可以正常工作,但如果我使用 pythonw.exe 会失败。

我得到的信息是:

但是,如果我不指定 'stdout' 参数, subprocess.call() 可以正常启动。

我可以看到 pythonw.exe 可能正在重定向输出本身,但我不明白为什么我被阻止为新线程指定标准输出。

0 投票
5 回答
49631 浏览

python - 在 Python 中按顺序执行命令?

我想连续执行多个命令:

即(只是为了说明我的需要):

cmd(贝壳)

然后

cd dir

ls

并读取ls.

subprocess对模块有任何想法吗?

更新:

cd dir并且ls只是一个例子。我需要运行复杂的命令(按照特定的顺序,没有任何流水线)。事实上,我想要一个子进程 shell 并能够在其上启动许多命令。

0 投票
30 回答
271798 浏览

python - 在 Python 中对 subprocess.PIPE 进行非阻塞读取

我正在使用subprocess 模块来启动一个子进程并连接到它的输出流(标准输出)。我希望能够在其标准输出上执行非阻塞读取。有没有办法使 .readline 非阻塞或在我调用之前检查流上是否有数据.readline?我希望它是可移植的,或者至少可以在 Windows 和 Linux 下工作。

这是我现在的做法(.readline如果没有可用数据,它会阻止):

0 投票
2 回答
658 浏览

python - 防止 Python 子进程在 Windows 上传递 fds?

默认情况下,Python 的 subprocess 模块将所有打开的文件描述符传递给它产生的任何子进程。这意味着如果父进程正在侦听端口并被杀死,它无法重新启动并再次开始侦听(即使使用 SO_REUSEADDR),因为子进程仍然拥有该描述符。我无法控制子进程。

子进程 POpen 构造函数确实接受一个 close_fds 参数,它会关闭子进程上的描述符,就像我想要的那样。但是,仅在 Windows 上存在一个限制,如果 stdin/stdout 也被覆盖,则无法使用它,我需要这样做。

有谁知道在 Windows 上解决此问题的方法?

0 投票
1 回答
15469 浏览

python - 如何使用子流程模块与流程正确交互

我在使用 subprocess 模块重定向另一个程序的 stdio 时遇到问题。仅从标准输出读取会导致挂起,并且 Popen.communicate() 可以工作,但它会在读取/写入后关闭管道。实现这一点的最简单方法是什么?

我在windows上玩这个:

0 投票
2 回答
5603 浏览

python - 产生期望控制台输入而不阻塞的子进程?

我正在尝试通过调用 cvs.exe 进程从 Python 进行 CVS 登录。当手动调用 cvs.exe 时,它​​会向控制台打印一条消息,然后等待用户输入密码。

当用 subprocess.Popen 调用它时,我注意到调用阻塞了。代码是

我假设它阻塞是因为它正在等待输入,但我的期望是调用 Popen 会立即返回,然后我可以调用 subprocess.communicate() 来输入实际密码。如何实现这种行为并避免阻塞 Popen?

操作系统:Windows XP
Python:2.6
cvs.exe:1.11

0 投票
4 回答
5866 浏览

python - subprocess.Popen 错误

我正在以静默模式运行 msi 安装程序并在特定文件中缓存日志。以下是我需要执行的命令。

C:\Program Files\ My Installer\Setup.exe /s /v "/qn /lv %TEMP%\log_silent.log"

我用了:

执行该命令,但它无法识别该操作并给出有关选择错误选项的错误。我已经交叉验证并发现该命令只能以这种方式工作。

0 投票
2 回答
26297 浏览

python - 在运行时拦截子进程的标准输出

如果这是我的子流程:

这是控制和修改子进程输出的脚本:

为什么要等到进程完成运行readlinecommunicate有没有一种简单的方法来实时传递(和修改)子进程的标准输出?

我在 Windows XP 上。