proc = subprocess.Popen(...)try: outs, errs = proc.communicate(timeout=15)exceptTimeoutExpired: proc.kill() outs, errs = proc.communicate() 注意 读取的数据是缓存在内存中的,所以如果数据量很大或者没有限制,不要使用这种方法。 在3.3 版中更改:timeout加入。
如果你想要设置超时,你可以使用Popen对象的communicate()方法,该方法有一个可选的timeout参数。这个参数会设置一个时间限制,如果在这个时间内子进程没有完成,communicate()方法将抛出TimeoutExpired异常。 下面是一个例子: import subprocess try: process = subprocess.Popen(['some_command', 'arg1', 'arg2'], s...
timeout参数传递给Popen.comunicate()方法。如果超时了,子进程会被杀死并且等待。TimeoutExpired会在子进程终止后被抛出。 input参数也传递给Popen.communicate()方法,从而传递给子进程的标准输入。如果要是用这个参数,必须传递一个字节序列,如果编码和错误指定了或者universal_newlines是true的话可以传递字符串。在使用的...
这里也可以使用p = subprocess.Popen(['ls', '-cl'])来创建子进程。 Popen 对象方法 poll(): 检查进程是否终止,如果终止返回 returncode,否则返回 None。 wait(timeout): 等待子进程终止。 communicate(input,timeout): 和子进程交互,发送和读取数据。 send_signal(singnal): 发送信号到子进程 。 terminate(...
class subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0,restore_signals=True, start_new_session=False, pass_fds=(), ...
import subprocess # 执行外部命令并交互 process = subprocess.Popen(['python', '-c', 'print("Hello, World!")'], stdout=subprocess.PIPE) output, error = process.communicate() print(output.decode('utf-8')) 3.设置超时 只有run()函数有设置timeout,Popen()没有 ...
请教关于 PIPE 的原理解释。谢谢。 看文档后,我个人的理解:如果subprocess.Popen 不使用 PIPE 参数,则仍然使用父进程的输入输出,因此会等待用户输入。 使用PIPE 后,Popen.communicate 则可以采用新的管道进行输入输出。 望给出一定的原理解释,或者参考资料。感谢。
1.使用subprocess模块 以下函数是调用子进程的推荐方法,所有使用场景它们都能处理。也可用Popen以满足更高级的使用场景 subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None) 运行args描述的命令,等待命令完成后返回returncode属性。
importsubprocess p=subprocess.Popen('pip -V',shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,)# 输出stdoutprint(p.communicate()[0]) 得到结果是byte类型的 代码语言:javascript 复制 b'pip 21.1.2 from e:\\python36\\lib\\site-packages\\pip (python 3.6)\r\r\n' ...
run("sleep 10 && ls", shell=True, timeout=5) File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/subprocess.py", line 507, in run stdout, stderr = process.communicate(input, timeout=timeout) File "/Library/Developer/CommandLineTools/...