本文共 962 字,大约阅读时间需要 3 分钟。
在Python中,如果你想执行shell命令却不想设置shell=True,可以使用subprocess模块。通过将命令放入一个列表中,你可以实现这一点。
比如,以下代码可以执行ls -l命令:
import subprocesscommand = ['ls', '-l']with subprocess.Popen(command, stdout=subprocess.PIPE) as process: output, error = process.communicate()print('Output:', output.decode()) 这里,subprocess.Popen创建了一个新的进程,执行指定的命令。stdout=subprocess.PIPE表示将标准输出捕获到output变量中。communicate()方法会等待子进程完成,并返回输出结果。
如果你也需要捕获错误输出,可以这样做:
import subprocesscommand = ['ls', '-l']with subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as process: output, error = process.communicate()print('Output:', output.decode())if error: print('Error:', error.decode()) 此外,你可以设置环境变量:
import subprocesscommand = ['ls', '-l']env = {'PATH': '/usr/local/bin:$PATH'}with subprocess.Popen(command, stdout=subprocess.PIPE, env=env) as process: output, error = process.communicate()print('Output:', output.decode()) 记得处理输出时要注意编码问题,使用decode()方法将字节转换为字符串。如果你需要处理多个命令,可以将它们放入同一个列表中。
转载地址:http://eiafk.baihongyu.com/