如果我执行以下操作:importsubprocessfromcStringIOimportStringIOsubprocess.Popen(['grep','f'],stdout=subprocess.PIPE,stdin=StringIO('one\ntwo\nthree\nfour\nfive\nsix\n')).communicate()[0]我明白了:Traceback(mostrecentcalllast):File"",line1,in?File"/build/toolchain/mac32/python-2.4.3/lib/python2.4/subprocess.py"
这个问题在这里已经有了答案:Runningshellcommandandcapturingtheoutput(21个回答)关闭去年。我正在尝试在Python中进行系统调用并将输出存储到我可以在Python程序中操作的字符串中。#!/usr/bin/pythonimportsubprocessp2=subprocess.Popen("ntpq-p")我已经尝试了一些方法,包括这里的一些建议:Retrievingtheoutputofsubprocess.call()但没有任何运气。 最佳答案 在Python2.7或Python3中您可
这是运行返回其stdout数据的任意命令或在非零退出代码上引发异常的Python代码:proc=subprocess.Popen(cmd,stderr=subprocess.STDOUT,#Mergestdoutandstderrstdout=subprocess.PIPE,shell=True)communicate用于等待进程退出:stdoutdata,stderrdata=proc.communicate()subprocess模块不支持超时——能够杀死运行超过X秒的进程——因此,communicate可能需要永远运行。在要在Windows和Linux上运行的Python程序中实
我有一个PHP脚本,它需要调用一个shell脚本,但根本不关心输出。shell脚本进行了许多SOAP调用并且完成速度很慢,所以我不想在PHP请求等待回复时减慢它的速度。事实上,PHP请求应该能够在不终止shell进程的情况下退出。我查看了各种exec()、shell_exec()、pcntl_fork()等函数,但没有一个他们似乎提供了我想要的东西。(或者,如果他们这样做,我不清楚该怎么做。)有什么建议吗? 最佳答案 如果它“不关心输出”,难道不能用&调用脚本的exec来后台处理进程吗?编辑-合并@AdamTheHut的内容对此帖子
有什么区别?每个功能是否有特定的情况或原因?如果是,您能举一些这些情况的例子吗?PHP.net说它们用于执行外部程序。seereference从我看到的例子来看,我没有看到任何明显的区别。如果我只是简单地运行一个脚本(bash或python),你推荐我使用哪个函数? 最佳答案 它们的用途略有不同。exec()用于调用系统命令,也许自己处理输出。system()用于执行系统命令并立即显示输出-可能是文本。passthru()用于执行您希望原始返回的系统命令-大概是二进制文件。无论如何,我建议你不要使用它们中的任何一个。它们都产生高度不
我想在我的grails项目中运行我的“execgrails”任务。我在exec任务中设置了chalice路径,例如怎么说呢,那个exec应该从我的项目文件夹开始? 最佳答案 来自execAnttaskdocumentation:AttributeDescriptiondirthedirectoryinwhichthecommandshouldbeexecuted. 关于deployment-从不同的文件夹运行antexec任务,我们在StackOverflow上找到一个类似的问题:
由于detailedmanual,我只是将redmine安装到我的服务器上.一切顺利,但最后一步因一些错误而失败,我不知道如何修复它。命令是RAILS_ENV=productionbundleexecrakedb:migrate输出错误Youcannotspecifythesamegemtwicewithdifferentversionrequirements.Youspecified:mysql(>=0)andmysql(~>2.9.1)gem列表***LOCALGEMS***actionmailer(3.2.15)actionpack(3.2.15)activemodel(3.2.
我使用的是Windows7、Ruby2.2.1和Rails4.2.0。运行railss或bundleexecrailsserver后出现以下错误:C:/Ruby22/lib/ruby/gems/2.2.0/gems/nokogiri-1.6.6.2-x86-mingw32/lib/nokogiri.rb:29:in`require':cannotloadsuchfile--nokogiri/nokogiri(LoadError)fromC:/Ruby22/lib/ruby/gems/2.2.0/gems/nokogiri-1.6.6.2-x86-mingw32/lib/nokogiri
我在Ruby脚本中运行以下(备份)代码:fordirectoryindirectoriesprint`s3sync.rb--exclude="#{EXCLUDE_REGEXP}"--delete--progress-r#{directory}my.amazon.backup.bucket:#{directory}`end我希望执行的子进程的输出能够实时回显到终端(而不是必须等到子进程返回)。我该怎么做? 最佳答案 IO.popen创建一个进程并为该进程的stdin和stdout返回一个IO对象。IO.popen("s3sync.rb
在我的~/.bashrc中,我有一个函数:functionsayHi(){echo"hi,$@"}在Ruby中我想:`sayHi"friend"`但是,sayHi在ruby运行exec或system的任何上下文中都“找不到”。如何让Ruby使用我的.bashrc中的函数? 最佳答案 您的.bashrc仅针对交互式shell运行。当您在Ruby中使用反引号执行命令时,它不会在交互式shell中执行该命令。您可以通过运行bash-i强制使用交互式shell。例如,要在交互式shell下运行命令,请使用:`bash-ic'sayHi"