要在 Python 中执行终端/控制台命令,可以使用 os
模块或 subprocess
模块。这两个模块的使用方式有所不同,下面就来详细讲解一下它们的使用方法。
使用 os 模块执行终端/控制台命令
首先,需要在 Python 中导入 os
模块:
import os
1. 执行简单的终端命令
如果要执行一个简单的终端命令,可以使用 os.system()
方法。该方法会在终端中执行指定的命令,并返回命令的退出状态码。
下面是一个使用 os.system()
方法执行 ls
命令(列出当前目录下的文件列表)的示例:
import os
status = os.system('ls')
print(f'命令的退出状态码为:{status}')
输出结果为:
文件1.txt 文件2.txt 文件3.txt
命令的退出状态码为:0
在这个示例中,os.system()
方法执行了 ls
命令,并将命令的退出状态码赋值给变量 status
。由于 ls
命令成功执行且没有出现错误,所以退出状态码为 0。
2. 执行包含变量的终端命令
如果要执行一个包含变量的终端命令,可以使用字符串格式化来将变量插入到命令字符串中。
下面是一个示例,在终端中获取当前系统的用户名:
import os
username = os.environ['USER']
status = os.system(f'echo "当前的用户名是 {username}"')
print(f'命令的退出状态码为:{status}')
输出结果为:
当前的用户名是 myuser
命令的退出状态码为:0
在这个示例中,首先使用 os.environ['USER']
获取当前系统的用户名,将其赋值给变量 username
。然后,使用字符串格式化将用户名插入到 echo
命令中,并使用 os.system()
方法执行该命令。
使用 subprocess 模块执行终端/控制台命令
subprocess
模块提供了更灵活的方法来执行终端/控制台命令,并且可以获取命令的标准输出、错误输出和退出状态码等信息。
首先,需要在 Python 中导入 subprocess
模块:
import subprocess
1. 执行简单的终端命令
如果要执行一个简单的终端命令,可以使用 subprocess.run()
方法。下面是一个使用 subprocess.run()
方法执行 ls
命令(列出当前目录下的文件列表)的示例:
import subprocess
result = subprocess.run(['ls', '-l'], capture_output=True)
print(result.stdout.decode())
输出结果类似于:
总用量 xx
drwxr-xr-x 2 myuser myuser xx xx xx 文件1.txt
drwxr-xr-x 2 myuser myuser xx xx xx 文件2.txt
drwxr-xr-x 2 myuser myuser xx xx xx 文件3.txt
在这个示例中,subprocess.run()
方法执行了 ls -l
命令,并将命令的结果存储在一个 CompletedProcess
对象中。由于capture_output=True
,所以可以通过 .stdout
属性获取 stdout
的值,其是 byte 类型的,需要利用 .decode()
方法转成 string 类型作为输出值。
2. 执行包含变量的终端命令
如果要执行一个包含变量的终端命令,可以使用字符串格式化来将变量插入到命令字符串中。与 os.system()
不同的是,subprocess.run()
方法需要将命令字符串拆分成一个列表,每个参数单独作为列表中的一个元素。
下面是一个示例,在终端中获取当前系统的用户名:
import subprocess
result = subprocess.run(['echo', f'当前的用户名是 {username}'], capture_output=True)
print(result.stdout.decode())
输出结果为:
当前的用户名是 myuser
在这个示例中,首先将包含变量的命令字符串拆分成一个列表,每个参数单独作为列表中的一个元素。然后,使用字符串格式化将用户名插入到列表中,并使用 subprocess.run()
方法执行该命令。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 执行终端/控制台命令的例子 - Python技术站