使用Python的run()函数运行Linux命令
发布时间:2023-12-24 16:19:59
在Python中,可以使用subprocess模块的run()函数来运行Linux命令。run()函数会创建一个子进程来执行命令,并等待命令执行完成后返回结果。
run()函数的基本语法如下所示:
subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, check=False, timeout=None, encoding=None, errors=None, text=None, env=None, universal_newlines=None, **other_popen_kwargs)
参数解释:
- args:要执行的命令,可以是一个字符串或字符串列表。
- stdin:标准输入流,可以是一个字节流。
- input:标准输入的内容,可以是一个字符串。
- stdout:标准输出流,可以是一个文件对象。
- stderr:标准错误流,可以是一个文件对象。
- shell:是否使用shell来执行命令,默认为False。
- check:是否抛出异常来表示命令运行失败,默认为False。
- timeout:命令执行的超时时间,超过该时间则会抛出TimeoutExpired异常。
- encoding:输入输出的编码,默认为None。
- errors:编码错误处理策略,默认为None。
下面是一些运行Linux命令的示例:
1. 运行简单的命令,如ls:
import subprocess # 运行命令并打印输出 subprocess.run(['ls']) # 运行命令并获取输出结果 result = subprocess.run(['ls'], capture_output=True, text=True) print(result.stdout)
2. 运行带有参数的命令,如ls -l:
import subprocess # 运行命令并打印输出 subprocess.run(['ls', '-l']) # 运行命令并获取输出结果 result = subprocess.run(['ls', '-l'], capture_output=True, text=True) print(result.stdout)
3. 运行需要通过管道传递输入的命令,如grep:
import subprocess # 运行命令并获取输出结果 result = subprocess.run(['grep', 'Python'], input='Python is a programming language.', capture_output=True, text=True) print(result.stdout)
4. 运行需要使用shell来执行的命令:
import subprocess
# 运行命令并获取输出结果
result = subprocess.run('echo "Hello, World"', shell=True, capture_output=True, text=True)
print(result.stdout)
5. 设置超时时间,如果命令运行时间超过指定时间,则会抛出TimeoutExpired异常:
import subprocess
# 运行命令并设置超时时间为1秒
try:
subprocess.run(['sleep', '2'], check=True, timeout=1)
except subprocess.TimeoutExpired as e:
print('Command timed out')
6. 获取命令的返回值和错误信息:
import subprocess # 运行命令并获取返回值和错误信息 result = subprocess.run(['ls'], capture_output=True, text=True) # 获取返回值 print(result.returncode) # 获取标准输出 print(result.stdout) # 获取标准错误 print(result.stderr)
需要注意的是,run()函数在Python 3.5及以上版本中可用。如果使用较旧的Python版本,可以使用Popen类来替代run()函数。
