Python执行外部命令subprocess的使用详解

  • Post category:Python

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()。有了这些函数,可以很方便地调用外部命令来完成各种任务。