从Python文件运行多个终端命令
因此,我一直在我的MacOS上胡闹,试图从Python文件中运行Terminal命令。以下是我到目前为止一直在使用的代码:从Python文件运行多个终端命令,python,linux,macos,terminal,Python,Linux,Macos,Terminal,因此,我一直在我的MacOS上胡闹,试图从Python文件中运行Terminal命令。以下是我到目前为止一直在使用的代码: #!/usr/bin/env python3 import os import subprocess print("IP Configuration for Machine") cmd = ['ifconfig'] proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subproces
#!/usr/bin/env python3
import os
import subprocess
print("IP Configuration for Machine")
cmd = ['ifconfig']
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
o, e = proc.communicate()
print('OUTPUT: ' + o.decode('ascii'))
print('ERROR: ' + e.decode('ascii'))
print('CODE: ' + str(proc.returncode))
当我打算只运行一个终端命令时,它工作得非常好。现在我打算运行多个一个,但到目前为止,它给了我错误。我尝试的一个例子:
print("IP Configuration for Machine & List Directory")
cmd = ['ifconfig', 'ls']
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
我想知道是否有办法解决我的困境Popen的参数是要执行的一个命令的名称。要运行混响,请运行多个子进程(或者运行一个运行多个子进程的子进程,例如一个shell) 顺便说一句,如果您只需要运行一个进程并等待它完成,那么可能要避免裸
Popen
['ifconfig','ls']中cmd的:
p=subprocess.run(cmd,capture\u output=True,check=True,text=True)
打印('输出:',p.stdout)
打印('错误:',p.stderr)
打印('结果代码:',p.returncode)
或
但通常
Popen
采用一个命令及其参数的名称,而不是按顺序运行两个单独的命令。您需要使用subprocess.Popen
两次,一次用于cmd
的每个元素。
p = subprocess.run('ifconfig; ls', shell=True, check=True, capture_output=True, text=True)
print(p.stdout, p.stderr, p.returncode)