欢迎访问宙启技术站
智能推送

Python中如何利用run()函数执行Shell脚本

发布时间:2024-01-12 09:13:31

Python中可以使用subprocess.run()函数来执行Shell脚本。subprocess.run()是Python中执行外部命令的高级接口,用于代替os.system()os.popen()

subprocess.run()函数有多个参数,其中最重要的参数是args,它表示要执行的Shell命令,可以是一个字符串或者是一个字符串列表。如果是字符串,会通过Shell来处理命令,如果是字符串列表,则直接执行命令,更安全。

除了args参数,subprocess.run()还有其他可选参数,如shell,表示是否通过shell来执行命令,默认为False;capture_output,表示是否捕获命令的输出,默认为False;check,表示是否检查命令的返回值,默认为False等等。

下面是一个使用subprocess.run()执行Shell脚本的例子:

import subprocess

# 执行简单的Shell命令
subprocess.run("ls")

# 执行复杂的Shell命令,比如带有管道、重定向等
subprocess.run("ls -l | grep py >> output.txt", shell=True)

# 执行Shell脚本文件
subprocess.run(["bash", "script.sh"])

# 捕获命令的输出
result = subprocess.run("ls", capture_output=True, text=True)
print(result.stdout)

# 检查命令的返回值
result = subprocess.run("ls non_existent_file", capture_output=True, text=True)
if result.returncode != 0:
    print("命令执行失败:", result.stderr)

在上面的例子中,我们首先执行了一个简单的Shell命令ls,它会列出当前目录下的文件和文件夹。

接着,我们执行了一个稍复杂的Shell命令,使用管道和重定向,将ls -l命令的输出结果通过grep py命令筛选后,追加到文件output.txt中。

然后,我们执行了一个Shell脚本文件script.sh,使用了一个字符串列表来表示命令。其中,列表的 个元素是Shell解释器的路径,第二个元素是Shell脚本文件的路径。

接下来,我们通过设置capture_output=True来捕获命令的输出,并通过text=True来让输出以字符串形式返回。这样,我们就可以直接打印出命令的输出结果。

最后,我们通过result.returncode来检查命令的返回值是否为0,如果不为0,则表示命令执行失败,错误信息可以通过result.stderr获取。