Python3操作Shell命令

在Python编程中,我们经常需要与操作系统的Shell交互,执行一些命令来完成一些任务。Python提供了多种方式来执行Shell命令,本文将介绍一些常用的方法,并给出代码示例。

使用os模块执行Shell命令

Python的os模块提供了执行Shell命令的方法。可以使用os.system()函数执行Shell命令,并获取命令的返回值。

下面是一个简单的示例,使用os.system()函数执行ls命令列出当前目录下的文件:

import os

# 执行Shell命令
result = os.system("ls")

# 输出返回值
print("Command executed with return code:", result)

在这个示例中,使用os.system("ls")执行了ls命令,并将命令的返回值保存在result变量中。然后使用print()函数输出返回值。

需要注意的是,os.system()函数返回的是命令的返回值,一般情况下,返回值为0表示执行成功,非零值表示执行失败。

使用subprocess模块执行Shell命令

Python的subprocess模块提供了更强大的方法来执行Shell命令,并获取命令的输出结果。

使用subprocess.run()函数执行Shell命令

subprocess.run()函数是Python 3.5之后新增的方法,用于执行Shell命令。它的用法非常简单,可以直接传入Shell命令作为参数。

下面是一个示例,使用subprocess.run()函数执行ls命令:

import subprocess

# 执行Shell命令
result = subprocess.run("ls", shell=True)

# 输出返回值
print("Command executed with return code:", result.returncode)

在这个示例中,使用subprocess.run("ls", shell=True)执行了ls命令,并将返回值保存在result变量中。然后使用result.returncode获取命令的返回值,并使用print()函数输出。

需要注意的是,subprocess.run()函数默认情况下会将命令的输出结果打印到标准输出。如果需要获取命令的输出结果,可以使用subprocess.PIPE参数,并通过result.stdout属性获取结果。

下面是一个示例,使用subprocess.run()函数执行ls命令,并获取命令的输出结果:

import subprocess

# 执行Shell命令,并获取输出结果
result = subprocess.run("ls", shell=True, stdout=subprocess.PIPE)

# 输出返回值
print("Command executed with return code:", result.returncode)

# 输出命令的输出结果
print("Command output:", result.stdout.decode())

在这个示例中,使用subprocess.run("ls", shell=True, stdout=subprocess.PIPE)执行了ls命令,并通过result.stdout.decode()获取命令的输出结果。

使用subprocess.Popen()函数执行Shell命令

subprocess.Popen()函数是一个更底层的方法,可以更灵活地执行Shell命令,并获取命令的输出结果。

下面是一个示例,使用subprocess.Popen()函数执行ls命令,并获取命令的输出结果:

import subprocess

# 执行Shell命令
process = subprocess.Popen(["ls"], stdout=subprocess.PIPE)

# 获取命令的输出结果
output, error = process.communicate()

# 输出命令的输出结果
print("Command output:", output.decode())

在这个示例中,使用subprocess.Popen(["ls"], stdout=subprocess.PIPE)执行了ls命令,并将输出结果保存在output变量中。然后使用output.decode()将输出结果转换为字符串,并使用print()函数输出。

需要注意的是,subprocess.Popen()函数返回一个Popen对象,可以通过该对象的属性和方法来操作命令的输入、输出和状态。

总结

本文介绍了使用Python3执行Shell命令的方法,并给出了代码示例。其中,使用os.system()函数可以简单地执行Shell命令,并获取返回值;使用subprocess.run()函数可以执行Shell命令,并获取返回值和输出结果;使用subprocess.Popen()函数可以更灵活地执行Shell命令,并操作输入、输出和状态。

通过这些方法,我们可以在Python程序中方便地执行Shell命令,实现与操作系统的交互。