草庐IT

subprocesses

全部标签

python - 将数据传递给 subprocess.check_output

我想调用一个脚本,将字符串的内容传送到它的标准输入并检索它的标准输出。我不想接触真正的文件系统,所以我不能为它创建真正的临时文件。使用subprocess.check_output我可以得到脚本所写的任何内容;我怎样才能把输入字符串放到它的标准输入中呢?subprocess.check_output([script_name,"-"],stdin="thisissomeinput")Traceback(mostrecentcalllast):File"",line1,inFile"/usr/lib/python2.7/subprocess.py",line537,incheck_out

python - 使用 subprocess.Popen 处理大输出

我有一些Python代码可以执行外部应用程序,当应用程序的输出量很小时,它可以正常工作,但在输出量很大时会挂起。我的代码如下:p=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)errcode=p.wait()retval=p.stdout.read()errmess=p.stderr.read()iferrcode:log.error('cmdfailed:%s'%(errcode,errmess))文档中的注释似乎表明存在潜在问题。等待中,有:Warning:Thiswill

python - subprocess:删除Windows中的子进程

在Windows上,subprocess.Popen.terminate调用win32的TerminalProcess。但是,我看到的行为是我试图终止的进程的子进程仍在运行。这是为什么?如何确保进程启动的所有子进程都被杀死? 最佳答案 通过使用psutil:importpsutil,osdefkill_proc_tree(pid,including_parent=True):parent=psutil.Process(pid)children=parent.children(recursive=True)forchildinchil

Python:ulimit 和不错的 subprocess.call/subprocess.Popen?

我需要限制使用subprocess.call从python进程生成的外部命令行应用程序占用的时间和CPU,主要是因为有时生成的进程会卡住并将CPU固定在99%。nice和ulimit似乎是执行此操作的合理方法,但我不确定它们如何与子进程交互。限制类似于:如果进程耗时超过60秒,则终止进程将其限制为CPU的20%我想将资源限制应用于子进程,而不是生成子进程的python进程。有没有办法将nice和ulimit应用于subprocess.call生成的进程?有更好的Python原生替代品吗?这是在linux(ubuntu)系统上。 最佳答案

python - 将python中的双引号shell命令传递给subprocess.Popen()?

我一直在尝试在ffmpeg的"concat:file1|file2"参数周围传递一个仅在命令行中使用文字双引号的命令。但是,我无法使用subprocess.Popen()在python中完成这项工作。任何人都知道如何将引号传递给subprocess.Popen?代码如下:command="ffmpeg-i"concat:1.ts|2.ts"-vcodeccopy-acodeccopytemp.mp4"output,error=subprocess.Popen(command,universal_newlines=True,stdout=subprocess.PIPE,stderr=su

python - 如何从 python (2.5) 中的 subprocess.Popen 获取 'real-time' 信息

我想通过以下方式使用子流程模块:创建一个可能需要很长时间才能执行的新进程。捕获stdout(或stderr,或可能两者兼有,一起或单独)处理来自子进程传入的数据,可能会在接收到的每一行上触发事件(在wxPython中说),或者只是暂时将它们打印出来。我已经使用Popen创建了进程,但是如果我使用communicate(),一旦进程终止,数据就会立即向我涌来。如果我创建一个单独的线程来执行myprocess.stdout的阻塞readline()(使用stdout=subprocess.PIPE)我在进程终止之前,也不要使用此方法获得任何行。(不管我设置为bufsize)有没有一种方法可

python - 使用 os.system() 或 subprocess.call() 时如何隐藏控制台?

我写了一些如下语句:os.system(cmd)#dosomethingsubprocess.call('taskkill/F/IMexename.exe')两者都会弹出一个控制台。如何阻止它弹出控制台? 最佳答案 进程STARTUPINFO可以隐藏控制台窗口:si=subprocess.STARTUPINFO()si.dwFlags|=subprocess.STARTF_USESHOWWINDOW#si.wShowWindow=subprocess.SW_HIDE#defaultsubprocess.call('taskkill/

python - 从 subprocess.communicate() 读取流输入

我正在使用Python的subprocess.communicate()从运行大约一分钟的进程中读取标准输出。如何以流方式打印出该进程的stdout的每一行,以便我可以看到生成的输出,但在继续之前仍会阻止进程终止?subprocess.communicate()似乎一次性给出所有输出。 最佳答案 在子进程刷新其标准输出缓冲区后,逐行获取子进程的输出:#!/usr/bin/envpython2fromsubprocessimportPopen,PIPEp=Popen(["cmd","arg1"],stdout=PIPE,bufsize

python - subprocess.check_output() 似乎不存在(Python 2.6.5)

我一直在阅读有关subprocess模块的Python文档(参见here),其中谈到了subprocess.check_output()似乎正是我需要的命令。但是,当我尝试使用它时,我得到一个它不存在的错误,当我运行dir(subprocess)时它没有列出。我运行的是Python2.6.5,我使用的代码如下:importsubprocesssubprocess.check_output(["ls","-l","/dev/null"])有人知道为什么会这样吗? 最佳答案 它是在2.7中引入的,参见docs.使用subprocess.

python - Windows 在 subprocess.call() 上找不到文件

我收到以下错误:WindowsError:[Error2]Thesystemcannotfindthefilespecified我的代码是:subprocess.call([">"])Windows7、64位。Python3.x最新、稳定。有什么想法吗?谢谢, 最佳答案 当命令是内置的shell时,在调用中添加shell=True。例如对于dir你可以输入:importsubprocesssubprocess.call('dir',shell=True)引用documentation:Theonlytimeyouneedtospec