-
-1 votesanswersviews
WINAPI:禁用stdin stdout stderr句柄的继承[关闭]
我使用带有标志 BOOL bInheritHandles = TRUE 的CreateProcess创建了子进程,因为我想将一些句柄传递给子进程的匿名管道 . 我在 STARTUPINFO struct中设置了 hStdInput , hStdOutput 和 hStdErro 以及 STARTF_USESTDHANDLES 标志,因为我不想对childs stdout等做一些事情 . 但是子进... -
190 votesanswersviews
逐行读取子进程标准输出
我的python脚本使用subprocess来调用非常嘈杂的linux实用程序 . 我想将所有输出存储到日志文件中并向用户显示一些输出 . 我认为以下内容可行,但在实用程序产生大量输出之前,输出不会显示在我的应用程序中 . #fake_utility.py, just generates lots of output over time import time i = 0 while True: ... -
0 votesanswersviews
从python中的管道子进程stdout读取行时的内存使用情况
我只是想了解在处理subprocess.Popen()结果和逐行读取时内存使用方面在“背景”中发生的情况 . 这是一个简单的例子 . 给定以下脚本 test.py 打印"Hello"然后等待10s并打印"world": import sys import time print ("Hello") sys.stdout.flush() ti... -
0 votesanswersviews
subprocess stdout字符串解码不起作用
我一口打印,它立即打印在命令行上,它在一段时间内生成多行 . 该工具为bs1770gain,命令为"path\to\bs1770gain.exe" "-i" "\path\to\audiofile.wav",通过使用--loglevel参数,您可以包含更多数据,但无法删除写入stdout的渐进结果 . 我需要stdout来返回一个人类可读... -
0 votesanswersviews
Python kill批处理文件进程失败
我正在尝试使用Python subprocess.Popen 来运行批处理文件,该文件执行 xfoil.exe 并为其提供一些参数 . 然后等待直到xfoil.exe退出 . 我已经使用以下代码作为批处理运行程序,它等待进程以超时退出 . 如果超时,该过程将被终止 . def Bat_Runner(args, **kwargs): """ Batch... -
2 votesanswersviews
为什么stdout对于使用shell = True vs False调用的subprocess.Popen表现不同?
作为一个最小的例子,我想在远程和本地机器上运行“ping website.com”,并将两者的输出并行打印到本地stdout . 我使用多处理来调用两个函数并行运行 . 每个函数都使用subprocess.Popen(“ping ...”) . 如果使用shell = True调用Popen,则仅打印一台机器的输出,最后打印另一台机器的输出 . 如果使用shell = False调用Popen,则... -
2 votesanswersviews
在python中使用subprocess.Popen运行java主类
我想使用 subprocess.Popen() 通过python执行java主类 main.java . main.java 需要3个参数 . 我想知道怎么做?例如,我有一个 HelloWorld.java 类: public class HelloWorld { public static void main(String[] args) { System.out.... -
1 votesanswersviews
如何运行Python的子进程并将其保留在后台
我看过很多关于我话题的帖子,但实际上我找不到解决问题的方法 . 我正在尝试在后台运行子进程,而不等待子进程执行 . 被调用的子进程是一个shell脚本,它执行许多不同的操作 . 这是我的一小段代码: print "Execute command:", full_command subprocess.Popen(full_command, stdin=None, stdout=N... -
272 votesanswersviews
使用模块'subprocess'超时
这是运行任意命令返回其 stdout 数据的Python代码,或者在非零退出代码上引发异常: proc = subprocess.Popen( cmd, stderr=subprocess.STDOUT, # Merge stdout and stderr stdout=subprocess.PIPE, shell=True) communicate 用于等待进... -
3 votesanswersviews
如何通过subprocess.Popen获取PID自定义环境变量?
使用Python,如何使用修改后的环境变量运行子进程并获取其PID?我假设subprocess.Popen()是沿着正确的轨道...... 在shell(bash)中,我会这样做: MY_ENV_VAR=value ./program_name arg1 arg2 etc & 这在后台运行 program_name ,传入"arg1"和"arg2"... -
0 votesanswersviews
Python子进程抛出[Errno 2]没有这样的文件或目录,只有当它在远程主机上时才会生成错误
我正在运行python 2.6 . 我正在获取子进程抛出[Errno 2]仅当我通过ssh运行脚本时才有这样的文件或目录 . 例如,如果我在机器上手动运行脚本,则没有错误,但如果我执行ssh hostname script.py --host hostname 它会生成错误并告诉我文件“/usr/lib64/python2.6/subprocess.py丢失,但这不是真的,因为两个服务器都有该文... -
0 votesanswersviews
使用python子进程在mac上获取目录大小而不是os.walk
我是python和子进程模块的新手 . 我正在尝试使用mac osx上的子进程使用python获取目录大小 . os.walk需要很长时间才能找到大型目录 . 我希望通过shell命令让子进程执行此操作并加快结果 . 这个shell命令对我有用,但我不能让它从子进程工作? (cd / test_folder_path && ls -nR | grep -v'^ d'| awk'{... -
2 votesanswersviews
Windows上的Bigquery命令行工具
这可能很简单,但很长一段时间我都收到了这个错误! 在Windows和python 2.7上 import subprocess p = subprocess.Popen([“C:\ Program Files \ Google \ Cloud SDK \ google-cloud-sdk \ bin \ bq”]) 回溯(最近调用最后一次):文件“", line 1, in File... -
1 votesanswersviews
Traceroute的Python脚本和在文件中打印输出显示Linux Mint中的错误(OSError:[Errno 2]没有这样的文件或目录)
我正在尝试使用python脚本在google.com上执行traceroute并将输出写入文件,即output.txt 如果我直接使用subprocess.call('traceroute','google.com'),它的工作完全正常,输出将打印在屏幕上 . 因为我想在文件中获取输出,所以我正在使用 subprocess.Popen([“tracert”,' - w','100',hostna... -
2 votesanswersviews
Python subprocess.popen和rdiff-backup
我想在python中创建一个rdiff-backup包装器程序,用于将windows机器备份到linux服务器 . 我想在包装器程序中处理rdiff-backup的输出 . 但是当使用子进程模块执行rdiff-backup并将stdout和stderr传递给包装器时,stdout总是最终成为管道的末尾 . 当使用子进程而没有管道时,stdout和stderr在控制台中以正确的顺序打印 . 当我在本... -
7 votesanswersviews
python,迭代subprocess.Popen()stdout / stderr
有很多类似的帖子,但我没有找到答案 . 在Gnu / Linux上,使用 Python 和 subprocess 模块,我使用以下代码迭代使用子进程启动的命令的stdout / sdterr: class Shell: """ run a command and iterate over the stdout/stderr lines &qu... -
4 votesanswersviews
如何使用Python调用命令,捕获stderr和stdout,而无需等待stderr / stdout关闭?
现在我有一些代码使用来自子进程的Popen.communicate()(设置 stdin=PIPE 和 stderr=PIPE )来运行命令并捕获stderr和stdout . 问题是 communicate() 不仅等待命令退出,它还等待stdout和stderr关闭 . 我正在运行的命令会生成一个子进程,它会使stderr保持打开状态,所以即使命令运行完毕(并在ps中显示为"defu... -
1 votesanswersviews
如何轮询和退出子进程
我想开始一个过程,等待2秒并打印出目前为止stderr和stdout管道中的任何内容,然后退出 . 这是我到目前为止的代码,它似乎没有像希望的那样工作 . 我究竟做错了什么? 有3个问题: 现在的程序打印出"done"然后在打印出第一行之前等待suprocess完成 . 目前,脚本读取一行 . 如何读取当前缓冲区的末尾?如果调用脚本退出, 子进程会退出吗?如果是这样... -
9 votesanswersviews
python:读取线程中的子进程输出
我有一个可执行文件,我使用subprocess.Popen调用 . 然后,我打算通过stdin使用一个线程从stdin中提取一些数据,该线程从队列中读取其值,稍后将在另一个线程中填充 . 应该使用另一个线程中的stdout管道读取输出,并再次在队列中进行排序 . 据我之前的研究所理解,使用带队列的线程是一种很好的做法 . 遗憾的是,外部可执行文件不会快速给出每个管道输入的答案,因此简单的写入,读取... -
2 votesanswersviews
subprocess.Popen() - 对p.stdout.read()和p.wait()的命令有关系吗?
关于Python的subprocess.Popen()对象的问题(请假设为stdout / stderr生成的字节数未填满OS管道缓冲区并创建等待OS管道缓冲区接受更多数据的死锁的情况) 1)p.stdout.read()和p.wait()的顺序是否重要? 2)在stdout / stderr subprocess.PIPE块上执行read()直到进程终止? 3)即使在进程终止后,stdout /... -
1 votesanswersviews
我是否应该使用Popen的等待或通信来读取Python 3中的子进程中的stdout? [重复]
这个问题在这里已有答案: read subprocess stdout line by line 7个答案 我试图在Python 3中运行子进程并不断读取输出 . 在Python 3的 subprocess 文档中,我看到以下内容: Popen.wait(timeout = None)等待子进程终止 . 设置并返回returncode属性 . 警告当使用stdout = PIPE和/或std... -
13 votesanswersviews
新手python子进程:“写入错误:断管”
感谢以下有用的建议: 所以我似乎已经修好了 单独命令到Popen的单独调用 stderr = subprocess.PIPE作为每个Popen链的参数 . 新代码: import subprocess import shlex import logging def run_shell_commands(cmds): """ Run command... -
4 votesanswersviews
通过python子进程与stdin通信
我正在使用子进程从我的python代码运行一个exe,代码如下: if subprocess.call(string, stderr=stdPoller, stdout=stdPoller, stdin=stdPoller, shell=True)==0: return True stdPoller 只是轮询stdout和stderr并写入日志 . 这不是问题所在 . 当... -
1 votesanswersviews
背景与stdin的python子进程
我查看了子进程模块的文档并用P_NOWAIT替换了spawn1,但我没有看到如何使用它并将数据写入stdin . 也就是说,如果我打电话给 pid = Popen(...).pid 正如文档所示,那么我在哪里与stdin PIPE进行通信 . 这是一些示例代码 档案1: #!/usr/bin/env python # testing how to run a processin the back... -
0 votesanswersviews
python子进程管道无缓冲行为
我有下面的代码来读取子进程中的数据,因为它生成并写入文件 . from subprocess import Popen, PIPE proc = Popen('..some_shell_command..', shell=True, stdout=PIPE) fd = open("/tmp/procout", "wb") while True: da... -
10 votesanswersviews
为什么shell = True吃我的subprocess.Popen stdout?
似乎在链的第一个进程中使用shell = True会以某种方式从下游任务中删除stdout: p1 = Popen(['echo','hello'], stdout=PIPE) p2 = Popen('cat', stdin=p1.stdout, stdout=PIPE) p2.communicate() # outputs correctly ('hello\n', None) 使第一个进程使... -
0 votesanswersviews
当指定stdin = PIPE时,Python subprocess.Popen终止
我是python中的子进程的新手,我需要生成一些独立的子进程,让它们保持活动状态并将命令传递给它们 . 乍一看,子进程库是我正在寻找的 . 我已经阅读了documenations,因为我必须指定输入 . 我需要通过windows命令行运行命令,因此下面的玩具示例足够好,如果我有它工作,我'm pretty much done. Running code below via IDLE opens a... -
0 votesanswersviews
Python Subprocess - run()stderr不会重定向到stdout
我有一个写入stderr的程序,没有写入stdout,我可以通过运行正确捕获: program -badargs 2> stderr.txt 但是,在尝试使用Python的子进程时,我无法捕获输出 . 我想将stderr与stdout结合起来 . 我使用的命令是: x = run('program -badargs', shell=True, stdout=subprocess.PIPE,... -
19 votesanswersviews
为什么带有shell = True的subprocess.Popen()在Linux与Windows上的工作方式不同?
当使用 subprocess.Popen(args, shell=True) 运行“ gcc --version ”(仅作为示例)时,在Windows上我们得到: >>> from subprocess import Popen >>> Popen(['gcc', '--version'], shell=True) gcc (GCC) 3.4.5 (mingw-... -
1 votesanswersviews
调用subprocess.Popen并将stdin,stdout和stderr设置为subprocess.PIPE更改终端的行为
我最近开发了一个Python脚本,以利用工具通过JMX从JVM中检索指标 . 父进程( p1 )使用以下代码启动另一个进程( p2 ) . p2 = subprocess.Popen( ['java', '-jar', '/path/to/jmxterm-1.0-alpha-4-uber.jar', '-l', url, '-u', username, '-p', passwor...