Questions tagged «subprocess»

Python子进程模块允许您生成新进程,连接到它们的输入/输出/错误管道,并获取它们的返回代码。使用它来运行Shell命令或Python中的可执行文件。


1
阻塞和非阻塞子流程调用
我之间是完全混淆subprocess.call(),subprocess.Popen(),subprocess.check_call()。 哪个是阻塞的,哪个不是? 我的意思是说我subprocess.Popen()是否使用父进程是否等待子进程继续执行之前return/ exit。 如何shell=True影响这些电话?

7
如何从Python subprocess.check_output()捕获异常输出?
我正在尝试从Python内部进行比特币付款。在bash中,我通常会这样做: bitcoin sendtoaddress <bitcoin address> <amount> 因此,例如: bitcoin sendtoaddress 1HoCUcbK9RbVnuaGQwiyaJGGAG6xrTPC9y 1.4214 如果成功,我会得到一个交易ID作为输出,但是如果我尝试转账大于比特币余额的金额,则会得到以下输出: error: {"code":-4,"message":"Insufficient funds"} 现在,在我的Python程序中,我尝试按以下方式进行付款: import subprocess try: output = subprocess.check_output(['bitcoin', 'sendtoaddress', address, str(amount)]) except: print "Unexpected error:", sys.exc_info() 如果有足够的余额,则可以正常工作,但是如果没有足够的余额,则会sys.exc_info()输出以下内容: (<class 'subprocess.CalledProcessError'>, CalledProcessError(), <traceback object at 0x7f339599ac68>) 它不包括我在命令行中得到的错误。所以我的问题是;如何{"code":-4,"message":"Insufficient funds"}从Python中获取输出的错误()? 欢迎所有提示!

7
使用子流程时如何在python中复制tee行为?
我正在寻找一种Python解决方案,该解决方案将允许我将命令的输出保存到文件中而不将其从控制台隐藏。 仅供参考:我想问的是tee(作为Unix命令行实用程序),而不是Python intertools模块中的同名函数。 细节 Python解决方案(不调用tee,在Windows下不可用) 我不需要为调用的进程提供任何输入到stdin 我无法控制被调用的程序。我所知道的是,它将向stdout和stderr输出一些内容,并返回退出代码。 在调用外部程序时工作(子过程) 要对工作都stderr和stdout 之所以能够区分stdout和stderr是因为我可能只想在控制台上显示其中之一,或者我可以尝试使用其他颜色输出stderr-这意味着stderr = subprocess.STDOUT它将不起作用。 实时输出(渐进式)-该过程可以运行很长时间,我无法等待它完成。 Python 3兼容代码(重要) 参考文献 到目前为止,我发现了一些不完整的解决方案: http://devlishgenius.blogspot.com/2008/10/logging-in-real-time-in-python.html(mkfifo仅在Unix上有效) http://blog.kagesenshi.org/2008/02/teeing-python-subprocesspopen-output.html(完全无效) 图表http://blog.i18n.ro/wp-content/uploads/2010/06/Drawing_tee_py.png 当前代码(第二次尝试) #!/usr/bin/python from __future__ import print_function import sys, os, time, subprocess, io, threading cmd = "python -E test_output.py" from threading import Thread class StreamThread ( Thread ): def __init__(self, buffer): …

3
如何写入Python子进程的stdin?
我正在尝试编写一个Python脚本来启动一个子进程,并将其写入子进程stdin。我还希望能够确定子进程崩溃时要采取的措施。 我试图启动的过程是一个名为的程序nuke,它具有自己的Python内置版本,我希望能够向其提交命令,然后告诉其在命令执行后退出。到目前为止,我已经得出结论,如果我在类似这样的命令提示符下启动Python,然后nuke作为子进程启动,那么我可以在中键入命令nuke,但是我希望能够将其全部放入脚本中,以便Python程序可以启动nuke,然后写入其标准输入(并因此写入其内置的Python版本),并使其执行令人眼花things乱的事情,因此,我编写了一个如下所示的脚本nuke: subprocess.call(["C:/Program Files/Nuke6.3v5/Nuke6.3", "-t", "E:/NukeTest/test.nk"]) 然后什么也没有发生,因为nuke正在等待用户输入。我现在将如何写入标准输入? 我这样做是因为我正在运行一个带有nuke该插件的插件,导致它在渲染多个帧时间歇性崩溃。因此,我希望该脚本能够启动nuke,告诉它执行某些操作,然后如果崩溃,请重试。因此,如果有一种方法可以捕捉到崩溃并仍然可以正常运行,那就太好了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.