草庐IT

python - shell=True 时如何确定 subprocess.Popen() 失败

Windows版本的Python2.6.4:有什么方法可以确定在使用shell=True时subprocess.Popen()是否失败?当shell=False时,Popen()成功失败>>>importsubprocess>>>p=subprocess.Popen('Nonsense.application',shell=False)Traceback(mostrecentcalllast):File">>>pyshell#258",line1,inp=subprocess.Popen('Nonsense.application')File"C:\Python26\lib\subpr

python - check_call check_output 调用和子进程模块中的 Popen 方法之间的实际区别是什么?

老实说,我只是不明白“非零”状态的行话,无法真正解释帮助页面上正在发生的事情或这意味着什么(甚至没有定义)。有哪些使用python调用其他脚本的例子,其中的这些过程subprocess.call子进程.check_output子进程.popen真的不一样吗?您什么时候会使用其中任何一个,这些方法的明确细节是什么?如果我想要简单的操作系统调用,我应该改用os.system吗? 最佳答案 主要区别在于,popen是一个非阻塞函数(意味着您可以继续执行程序而无需等待调用完成),call和check_output正在阻塞。另一个区别在于它们

python - 所有 os.popen() 方法之间有什么区别?

我正在查看Pythondocumentation并看到有4-5个不同版本的popen(),例如os.popen()、os.popen2()等除了一些包含stderr而另一些不包含的事实之外,它们之间有什么区别以及您何时使用它们?文档并没有很好地解释它。 最佳答案 杰森说得对。以更容易理解的方式总结:os.popen()->标准输出os.popen2()->(stdin,stdout)os.popen3()->(stdin,stdout,stderr)os.popen4()->(stdin,stdout_and_stderr)

Python Popen 找不到指定的文件

我有以下代码pathToFile="R:\T2Output\12345--01--SomeFile1--ABCD.mp4"process=subprocess.Popen(['ffprobe.exe','-show_streams','"'+pathToFile+'"'],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)我得到错误:[Error2]Thesystemcannotfindthefilespecified我尝试过的:将shell=True更改为shell=False将命令组合成单个字符串而不是使用列表(我什至

python - 写入 Python subprocess.Popen 对象的文件描述符 3

如何写入subprocess.Popen对象的文件描述符3?我正在尝试使用Python在以下shell命令中完成重定向(不使用命名管道):$gpg--passphrase-fd3-c3filename.gpg 最佳答案 子进程proc继承在父进程中打开的文件描述符。因此,您可以使用os.open打开passphrase.txt并获取其关联的文件描述符。然后您可以构造一个使用该文件描述符的命令:importsubprocessimportshleximportosfd=os.open('passphrase.txt',os.O_RDO

python - 在 apache+mod_wsgi 下运行 subprocess.Popen 总是返回一个返回码为 -6 的错误

我希望有人看到这个-我正在运行django-compressor,利用lessc设置将less呈现/压缩到文件的CSS中。它在从开发服务器调用时完美运行,但在apache+mod_wsgi下运行时,它始终返回错误。为了调试它,我运行了过滤器作为www-data用户(在WSGIDaemonProcess指令中定义为wsgi用户)调用的确切命令,并验证它是否正常工作,包括读写权限它正在处理的文件。我还破解了该系统上compressor/filters/base.py中的django-compressor代码,似乎任何试图调用的命令在proc.communicate()调用后都会得到-6的返

python - subprocess.Popen 使用相对路径

docs对于Popen,您不能指定相对于“更改工作目录”kwarg的可执行文件路径。IfcwdisnotNone,thechild’scurrentdirectorywillbechangedtocwdbeforeitisexecuted.Notethatthisdirectoryisnotconsideredwhensearchingtheexecutable,soyoucan’tspecifytheprogram’spathrelativetocwd.但python在我的系统上的行为似乎直接与这种说法相矛盾:/tmp$mkdira/tmp$cp/bin/ls/tmp/a/my_ls

python - subprocess.Popen() 在 Eclipse/PyCharm 和终端执行之间有不一致的行为

我遇到的问题是Eclipse/PyCharm以不同于标准终端的方式解释子进程的Popen()结果。都是在OSX上使用python2.6.1。这是一个简单的示例脚本:importsubprocessargs=["/usr/bin/which","git"]print"Willexecute%s"%"".join(args)try:p=subprocess.Popen(["/usr/bin/which","git"],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)#tupleofStdOut,StdErristheres

python - 在 Python 中禁用 subprocess.Popen 的控制台输出

我在Windows上运行Python2.5,在我的代码中某处subprocess.Popen("taskkill/PID"+str(p.pid))通过pid杀死IE窗口。问题是,如果不在Popen中设置管道,我仍然会输出到控制台-成功:PID为2068的进程已终止。我将其调试到subprocess.py中的CreateProcess,但无法从那里开始。有人知道如何禁用它吗? 最佳答案 importosfromsubprocessimportcheck_call,STDOUTDEVNULL=open(os.devnull,'wb')t

python - 如何使用 popen 对输出进行管道传输?

我想使用popen管道输出我的文件,我该怎么做?测试.py:whileTrue:print"hello"a.py:importosos.popen('pythontest.py')我想使用os.popen管道输出。我怎样才能做同样的事情? 最佳答案 首先,os.popen()已弃用,请改用subprocess模块。你可以这样使用它:fromsubprocessimportPopen,PIPEoutput=Popen(['command-to-run','some-argument'],stdout=PIPE)printoutput.