Python 执行 Shell 命令的四种方法

2022-03-09 宋洋葱 宋洋葱 1 min

方法一:os.system

os.system 只能执行命令,无法获取执行的结果。并打印输出结果,返回值仅返回是否成功,成功返回 0 ,否则返回非零数字。

import os
a = os.system("pwd") # a = 0
b = os.system("cd xxx") # b = 256

方法二:subprocess.call

官方建议使用subprocess替换 os.system。

运行 subprocess.call 命令 完成后返回 returncode 属性。也取不到返回值。

方法三:subprocess.run

subprocess 允许您生成新进程,连接到它们。执行后返回的是

subprocess.run可以控制输入/输出/错误管道,执行完毕后可获取它们的输出和返回码。其返回值为 CompletedProcess 的一个实例。

import subprocess
list_files = subprocess.run(["ls", "-l"])
print(list_files) # completedProcess

定义 stdout=subprocess.PIPE 和 text=True 即可获取字符串形式的执行结果。

import subprocess
list_files = subprocess.run(["ls", "-l"],stdout=subprocess.PIPE, text=True)
useless_cat_call = subprocess.run(["cat"], 
print(list_files.stdout)  #

方法四:subprocess.Popen

相当于异步执行

总结

如果您需要运行一个或几个简单的命令并且不介意它们的输出是否发送到控制台,您可以使用该os.system()命令。如果要管理 shell 命令的输入和输出,请使用subprocess.run(). 如果要运行命令并在执行时继续执行其他工作,请使用subprocess.Popen

Leave a Comment

Your email address will not be published. Required fields are marked *