草庐IT

supervisor-stdout

全部标签

python - 如果stdout = PIPE,我如何找出为什么subprocess.Popen wait() 永远等待?

我有一个写入标准输出和可能标准错误的程序。我想从python运行它,捕获标准输出和标准错误。我的代码如下:fromsubprocessimport*p=Popen(exe,shell=TRUE,stdout=PIPE,stderr=PIPE)rtrncode=p.wait()对于几个程序,这可以正常工作,但是当我添加一个新程序时,新程序会永远挂起。如果我删除stdout=PIPE,程序会将其输出写入控制台并完成,一切都很好。如何确定导致挂起的原因?在WindowsXP上使用python2.5。该程序不会从标准输入读取数据,也没有任何类型的用户输入(即“按下键”)。

python - 子进程.Popen : cloning stdout and stderr both to terminal and variables

是否可以修改下面的代码以从'stdout'和'stderr'打印输出:在终端上打印(实时),最后存储在outs和errs变量中?代码:#!/usr/bin/python3#-*-coding:utf-8-*-importsubprocessdefrun_cmd(command,cwd=None):p=subprocess.Popen(command,cwd=cwd,shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)outs,errs=p.communicate()rc=p.returncodeouts=outs.deco

python - 将 stdout 和 stderr 从辅助线程重定向到 PyQt4 QTextEdit

堆栈溢出。再一次,我在急需的时候来找你,在精神错乱的边缘摇摇欲坠。这个问题——从标题中可以看出——是我在这里看到的其他几个问题的合并。我有一个PyQt应用程序,我想将stdout和stderr流重新路由到我的GUI中的QTextEdit没有延迟。最初,我找到了以下堆栈溢出答案:https://stackoverflow.com/a/17145093/629404这很有效,但有一个警告:如果在CPU处理相对较长的方法时多次更新stdout或stderr,所有更新都会在主线程返回应用程序循环时同时显示。不幸的是,我有一些方法最多需要20秒才能完成(与网络相关),因此应用程序变得无响应-并且

Python 子进程 Popen.communicate() 等价于 Popen.stdout.read()?

非常具体的问题(我希望):以下三个代码有什么区别?(我希望它只是第一个不等待子进程完成,而第二个和第三个会这样做。但我需要确定这是only的区别...)我也欢迎其他评论/建议(尽管我已经很清楚shell=True的危险和跨平台限制)请注意,我已经阅读了Pythonsubprocessinteraction,whydoesmyprocessworkwithPopen.communicate,butnotPopen.stdout.read()?并且我不想/不需要之后与程序交互。另外请注意,我已经阅读了AlternativestoPythonPopen.communicate()memory

python - print() 与 sys.stdout.write() : which and why?

我有一个使用sys.stdout.write()和sys.stderr.write()创建输出的脚本。最近我发布了几个关于脚本其他方面的问题,我注意到发布答案的人似乎更喜欢print('sometext',file=sys.stdout)。我对输出的主要关注只是它可以通过shell管道传输到文件中或作为另一个程序的输入。有人可以解释(或指导我引用现有的解释)print()和sys.stdout.write之间的区别,每个应该使用的情况和这些约定合理吗? 最佳答案 "有人可以解释(或引导我到现有的解释)print()和sys.stdo

python - 删除 Python 中的最后一个 STDOUT 行

我试图弄清楚如何禁止在标准输出上显示用户输入。raw_input()后跟任何print语句都会保留用户输入的内容。getpass()不会显示用户输入的内容,但会保留“密码”:"提示。要解决这个问题,我只想删除最后一行(这也会从行尾删除换行符)。 最佳答案 您可以使用VT100controlcodes做您想做的事.可能是这样的:CURSOR_UP_ONE='\x1b[1A'ERASE_LINE='\x1b[2K'print(CURSOR_UP_ONE+ERASE_LINE) 关于pytho

python - 你能像往常一样制作一个python子进程输出stdout和stderr,但也可以将输出捕获为字符串吗?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Wrapsubprocess'stdout/stderr在thisquestion,hanan-n询问是否有可能有一个python子进程输出到标准输出,同时还将输出保存在字符串中以供以后处理。这种情况下的解决方案是遍历每个输出行并手动打印它们:output=[]p=subprocess.Popen(["the","command"],stdout=subprocess.PIPE)forlineiniter(p.stdout.readline,''):print(line)output.append(line)

python - 将子进程 stderr 重定向到 stdout

我想将子进程的标准错误输出重定向到标准输出。常数STDOUT应该这样做,不是吗?然而,$python>/dev/null-c'importsubprocess;\subprocess.call(["ls","/404"],stderr=subprocess.STDOUT)'确实输出了一些东西。为什么会这样,我如何在标准输出上得到错误信息? 最佳答案 在Python仔细阅读sourcecode给出了答案。特别是documentation当它说:subprocess.STDOUTSpecialvaluethat(...)indicate

python - 运行包含管道的命令行并将结果显示到 STDOUT

如何从Python调用包含管道的shell命令并捕获输出?假设命令类似于:catfile.log|tail-1Perl相当于我正在尝试做的事情是这样的:my$string=`catfile.log|tail-1`; 最佳答案 使用subprocess.PIPE,如子流程文档部分"Replacingshellpipeline"中所述:importsubprocessp1=subprocess.Popen(["cat","file.log"],stdout=subprocess.PIPE)p2=subprocess.Popen(["ta

python - Ubuntu中的nginx和supervisor设置

我正在按照本教程http://ijcdigital.com/blog/django-gunicorn-and-nginx-setup/使用django-gunicorn-nginx设置直到nginx设置,它正在工作。然后我安装了主管,配置它,然后我重新启动服务器并检查,它显示502badgateway。我正在使用Ubuntu12.04LTS/etc/supervisor/conf.d/qlimp.conf[program:qlimp]directory=/home/nirmal/project/qlimp/qlimp.shuser=nirmalcommand=/home/nirmal/