Python执行外部命令subprocess的使用详解
什么是subprocess?
Subprocess模块是Python的标准库之一,可以在Python程序中执行外部程序并获取它们的输出。它可以创建进程,连接它们的输入、输出和错误管道,并获取它们的返回码。这种模块对于需要与其他程序进行交互的Python程序非常有用。
subprocess模块常用函数
subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, env=None)
: 执行指定的命令。可以将输入附加到命令并返回命令的输出和错误。subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
: 开始一个子进程来执行参数列表传递的命令。可以配置输入输出和错误处理方式。subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None, encoding=None, errors=None)
: 运行指定的命令并返回退出状态码。
用法示例
示例1:获取当前目录下的所有文件,并将结果保存到txt文件中
import subprocess
# 获取当前目录下的所有文件名
result = subprocess.run('ls', stdout=subprocess.PIPE)
file_list = result.stdout.decode().split('\n')
# 将结果保存到txt文件中
with open('file_list.txt', 'w') as f:
for file in file_list:
f.write(file + '\n')
print('文件列表已保存到file_list.txt中')
示例2:使用Python脚本下载文件
import subprocess
# 下载文件
subprocess.run(['wget', 'https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz'])
print('文件下载完成')
在这个示例中,我们使用了subprocess.run()函数来执行wget命令来下载文件。
总结
subprocess模块是Python标准库之一,可以在Python程序中执行外部命令并获取输出。本文介绍了subprocess模块的3个常用函数:subprocess.run()
、subprocess.call()
和subprocess.Popen()
。有了这些函数,可以很方便地调用外部命令来完成各种任务。