草庐IT

python - 忽略 subprocess.Popen 的输出

这个问题在这里已经有了答案:Howtoreadthefirstbyteofasubprocess'sstdoutandthendiscardtherestinPython?(2个答案)关闭7年前。我正在从我的Python脚本调用一个java程序,它输出了很多我不想要的无用信息。我已经尝试将stdout=None添加到Popen函数中:subprocess.Popen(['java','-jar','foo.jar'],stdout=None)但它的作用是一样的。有什么想法吗?

python - subprocess.Popen execve() arg 3 包含一个非字符串值

我正在尝试通过shell运行另一个脚本,该脚本使用一组修改后的环境变量。defcgi_call(script,environ):pSCRIPT=subprocess.Popen(script,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE,env=environ,shell=True)pc=pSCRIPT.communicate()status="200OK"headers=[('Content-Type',"text/html")]ifpc[1]!='':raiseRuntimeError,pc[

python - 如何从一个 subprocess.Popen 命令同步运行多个命令?

是否可以使用相同的子进程命令按顺序执行任意数量的命令?我需要每个命令在执行之前等待前一个命令完成,并且我需要它们都在同一个session/shell中执行。我还需要它在Python2.6、Python3.5中工作。我还需要subprocess命令在Linux、Windows和macOS中工作(这就是为什么我在这里只使用echo命令作为示例)。请参阅下面的非工作代码:importsysimportsubprocesscmds=['echostart','echomid','echoend']p=subprocess.Popen(cmd=tuple([itemforitemincmds])

python - subprocess.Popen() IO 重定向

尝试将子进程的输出重定向到文件。服务器.py:while1:print"Count"+str(count)sys.stdout.flush()count=count+1time.sleep(1)劳彻:cmd='./server.py>temp.txt'args=shlex.split(cmd)server=subprocess.Popen(args)输出出现在屏幕上,temp.txt保持为空。我做错了什么?作为背景,我正在trycatch已编写程序的输出。我不能使用:server=subprocess.Popen([exe_name],stdin=subprocess.PIPE,std

python - 如果 "env"参数包含 unicode 对象,为什么 Popen 在 Windows 上会失败?

考虑这个例子:>>>importsubprocessassp>>>sp.Popen("notepad2.exe",env={"PATH":"C:\\users\\guillermo\\smallapps\\bin"})>>>sp.Popen("notepad2.exe",env={"PATH":u"C:\\users\\guillermo\\smallapps\\bin"})Traceback(mostrecentcalllast):File"",line1,inFile"C:\Python26\lib\subprocess.py",line633,in__init__errread,

python - 当 Popen 错误时,子进程的 Popen 关闭在另一个线程中使用的 stdout/stderr 文件描述符

当我们从Python2.7.3升级到Python2.7.5时,大量使用subprocess.Popen()的内部库的自动化测试开始失败。该库用于线程环境。调试问题后,我能够创建一个简短的Python脚本来演示在失败的测试中看到的错误。这是脚本(称为“threadedsubprocess.py”):importtimeimportthreadingimportsubprocessdefsubprocesscall():p=subprocess.Popen(['ls','-l'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=sub

python - 如何从 subprocess.Popen 获取退出代码?

对于下面的代码,p.returncode总是None。根据Popen.returncodedocumentation,这意味着该过程尚未完成。为什么我没有收到退出代码?importosimportsysimportsubprocesscmd=['echo','hello']p=subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)try:#Filterstdoutforlineiniter(p.stdout.readline,''):sys.stdout.flush()#Printstatusprint

python - subprocess.Popen 不是线程安全的吗?

以下简单脚本间歇性地卡在subprocess.Popen调用上(大约30%的时间)。除非use_lock=True,否则它永远不会挂起,这让我相信子进程不是线程安全的!预期行为是脚本在5-6秒内完成。要演示错误,只需运行“pythonbugProof.py”几次直到它挂起。Ctrl-C退出。您会看到“post-Popen”仅出现一两次,但不会出现第三次。importsubprocess,threading,fcntl,os,timeend_time=time.time()+5lock=threading.Lock()use_lock=Falsepath_to_factorial=os.

python - 子进程.Popen : how to pass a list as argument

我只需要有关如何正确做事的提示。假设我有一个名为script.py的脚本,它使用名称列表作为参数["name1"、"name2"等]。我想使用subprocess模块从另一个脚本调用这个脚本。所以我想做的是:myList=["name1","name2","name3"]subprocess.Popen(["python","script.py",myList])当然这不起作用,因为subprocess.Popen方法需要一个字符串列表作为参数。所以我考虑执行以下操作:subprocess.Popen(["python","script.py",str(myList)])现在进程开始了

python - 在 Python 中使用 subprocess.Popen 检查进程状态

如果我在Python中使用subprocess.Popen调用一个进程,如下所示:myproc=subprocess.Popen(...).communicate()查看其状态的正确方法是什么?不是它输出到stdout或stderr,而是它完成后的退出状态(例如0表示成功或另一个表示失败)? 最佳答案 returncode确实是答案,但解决方案不需要很复杂。process=subprocess.Popen(...)stdoutdata,stderrdata=process.communicate()printprocess.retu