【python – 是否可以在子进程中运行函数而无需线程化或编写单独的文件/脚本.】教程文章相关的互联网学习教程文章

如何将python子进程stderr和stdout重定向到多个文件?【代码】

这个问题已经在这里有了答案: > Python subprocess get children’s output to file and terminal? 2个我只想将stderr和stdout重定向到多个文件.例如:stderr应该重定向到file_1和file_2. 我在下面使用重定向输出到单个文件.subprocess.Popen("my_commands",shell=True,stdout=log_file,stderr=err_file,executable="/bin/bash")上面的东西将stdout和stderr重定向到单个...

python-如何为子进程提供密码并同时获取stdout【代码】

我正在尝试检查远程计算机上是否存在可执行文件,然后运行所说的可执行文件.为此,我正在使用子进程来运行ssh< host>. ls< file&gt ;,如果成功,请运行ssh< host> &LT文件&gt ;. ssh当然要求输入密码,我想自动提供该密码.另外,我想从ls中获取返回码,并从运行命令中获取stdout和stderr. 因此,我知道需要用到communication()方法来避免死锁,但是我无法获得Popen(stdin)可以识别的密码.另外我正在使用Python 2.4.3,并停留在该版本上.这是...

Python子进程使用超时终止【代码】

我正在使用python中的子进程模块运行一些shell脚本.如果shell脚本运行得很长,我喜欢杀死子进程.我认为如果我将timeout = 30传递给我的run(..)语句就足够了. 这是代码:try:result=run(['utilities/shell_scripts/{0} {1} {2}'.format(self.language_conf[key][1], self.proc_dir, config.main_file)],shell=True,check=True,stdout=PIPE,stderr=PIPE, universal_newlines=True, timeout=30,bufsize=100) except TimeoutExpired as ...

python – 在子进程Popen和通信之后关闭所有文件的正确方法【代码】

在我们的Ubuntu Linux机器上运行python Twisted应用程序时,我们遇到了可怕的“太多打开文件”的问题.在我们程序的许多地方,我们使用子进程Popen,如下所示:Popen('ifconfig ' + iface, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) output = process.stdout.read()而在其他地方我们使用子进程通信:process = subprocess.Popen(['/usr/bin/env', 'python', self._get_script_path(script_name)],stdin=su...

python – 保存子进程命令的错误消息【代码】

使用子进程运行bash命令时,我可能会遇到命令无效的情况.在这种情况下,bash将返回错误消息.我们怎样才能抓住这条消息?我想将此消息保存到日志文件中.以下是一个示例,我尝试在不存在的目录中列出文件.try:subprocess.check_call(["ls", "/home/non"]) df = subprocess.Popen(["ls", "/home/non"], stdout=subprocess.PIPE) output, err = df.communicate()# process outputs except Exception as error: print errors...

Python tkinter:在子进程调用之间更新GUI【代码】

我编写了一个多次调用.cmd文件的GUI(使用不同的参数)class App:def process(self):for filename in os.listdir(path):subprocess.call(['script.cmd', filename])self.output('processed ' + filename)def output(self, line):self.textarea.config(state = NORMAL)self.textarea.tag_config("green", background="green", foreground="black")self.textarea.insert(END, line, ("green"))self.textarea.yview(END)self.textarea.c...

python – 是否有可能重新编写子进程?【代码】

我知道os.nice()它对于父进程来说是完美的,但是我需要对子进程进行管理.我找到了这样做的方法,但似乎不是很方便和过分:os.system("renice -n %d %d" % ( new_nice, suprocess.pid ) )并且它在返回后不会返回得到很好的水平. 在python中有更简洁的方法来管理子进程吗?解决方法:使用subprocess.Popen的preexec_fn参数:If preexec_fn is set to a callable object, this object will be called in the child process just before t...

python – 在后台执行子进程【代码】

我有一个python脚本,它接受一个输入,将其格式化为一个命令,调用服务器上的另一个脚本,然后使用子进程执行:import sys, subprocessthingy = sys.argv[1]command = 'usr/local/bin/otherscript.pl {0} &'.format(thingy) command_list = command.split() subprocess.call(command_list)我附加&到最后因为otherscript.pl需要一些时间来执行,我更喜欢在后台运行.但是,脚本似乎仍然执行而没有让我重新控制shell,我必须等到执行完成后才...

Python子进程参数【代码】

例如我正在使用ffplay并希望运行此命令-bufsize [:stream_specifier]整数(输出,音频,视频) 目前我有这个:subprocess.call(["ffplay", "-vn", "-nodisp","-bufsize 4096", "%s" % url])但这说它无效.解决方法:正如JBernardo在评论中提到的那样,将“-bufsize 4096”参数分成两个,“ – bufsize”,“4096”.当subprocess.call与shell = False(默认值)一起使用时,每个参数都需要分开.您还可以指定shell = True并将整个命令作为单个字...

使用python在不同的virtualenv中运行子进程【代码】

假设我在2种不同的虚拟环境中安装了2个不同版本的应用程序. myapp v1.0和myapp v2.0. 现在我想比较一下.比较是用python本身编写的.最好的方法是什么?我们假设我可以单独运行它们并且都写一个输出文件,我可以稍后比较. 一种方法是编写一个bash脚本(这就是我目前所拥有的).我激活一个virtualenv,运行myapp v1.0,激活另一个virtualenv,运行myapp v2.0.稍后在这些文件上运行比较模块.但是我想在那里添加更多的动态(采用一些可选的参数...

Python子进程模块比命令慢得多(不建议使用)【代码】

所以我写了一个脚本,在命令行上使用nc访问一堆服务器,最初我使用Python的命令模块并调用commands.getoutput(),脚本在大约45秒内运行.由于命令已弃用,我想将所有内容更改为使用子进程模块,但现在脚本需要2m45s才能运行.任何人都知道为什么会这样? 我之前的所作所为:output = commands.getoutput("echo get file.ext | nc -w 1 server.com port_num")我现在有p = Popen('echo get file.ext | nc -w 1 server.com port_num', shell=...

Python:并行运行子进程【代码】

参见英文答案 > Python subprocess in parallel 3个我有以下代码将md5sums写入日志文件for file in files_output:p=subprocess.Popen(['md5sum',file],stdout=logfile) p.wait()>这些是并行写的吗?即如果md5sum对其中一个文件花费很长时间,那么在等待前一个文件完成之前是否会启动另一个文件?>如果上面的答案是肯定的,我可以假设写入日志文件的md5sums的顺序可能因md5sum对每个文件的持续时间...

Python多处理将子进程的stdout重定向到Tkinter Text【代码】

我正在尝试使用Tkinter GUI来启动子进程并将其stdout / stderr输出显示到Text小部件.最初,我认为通过设置“sys.stdout = text_widget”可以很容易地将sys.stdout重定向到Text小部件,但似乎没有.它出现错误:“文本实例没有属性’flush’”. 我在网上查了一下,得到了一些解决方案,比如使用Queue与子进程进行通信.但是,由于我的特殊要求,它们都不适合我的情况: >最好通过“multiprocessing.Process”启动子进程,因为使用共享变量会更...

在Python中模拟子进程调用【代码】

我有一个方法(run_script)想测试.具体来说,我想测试一下对subprocess.Popenoccurs的调用.测试subprocess.Popen甚至更好用某些参数调用.当我运行测试时,我得到TypeError:’tuple’对象不可调用. 如何测试我的方法以确保实际使用模拟调用子进程?@mock.patch('subprocess.Popen') def run_script(file_path):process = subprocess.Popen(['myscript', -M, file_path], stdout=subprocess.PIPE)output,err = process.communicate()re...

python – 实时拦截子进程输出的问题【代码】

我花了大约6个小时来堆栈溢出,重写我的python代码并尝试让它工作.它只是没有.不管我做什么. 目标:使子流程的输出实时显示在tkinter文本框中. 问题:我无法弄清楚如何让Popen实时工作.它似乎一直挂起,直到该过程完成. (单独运行,该过程完全按预期工作,所以只有这个有错误) 相关代码:import os import tkinter import tkinter.ttk as tk import subprocessclass Application (tk.Frame):process = 0def __init__ (self, master=Non...