草庐IT

python - Popen 不再适用于 apache/wsgi 和 python 2.7.2?

我的django应用程序曾经使用pythonsubprocess.Popen制作一些shell命令,因为我将ubuntu升级到11.10后不再工作为了简化问题,我将错误的代码放入wsgi脚本中:importosimportsysfromsubprocessimportPopen,PIPEp=Popen(['/usr/bin/id'],stdout=PIPE,stderr=PIPE)comm=p.communicate()printcomm,p.returncodeos.environ['DJANGO_SETTINGS_MODULE']='settings'importdjango.co

Python:subprocess.popen:读取每一行输出

我无法逐行读取我的子进程输出。子进程简单地将一个文件的内容与另一个文件进行对比。输出应该是一个两列文件,可以很好地打印到标准输出。但是当我尝试读取每一行时,它会读取每个字符后跟\n:#!/usr/bin/pythonimportsysimportgetoptimportosimportsubprocessfromsubprocessimportPopen,PIPE,STDOUTinputfile=''target=''try:opts,args=getopt.getopt(sys.argv[1:],"s:t:",['servers=','target='])exceptgetopt.G

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.