subprocess
subprocess 是 Python 的一个标准库,用于创建和管理子进程。它允许 Python 程序启动新的进程、连接到它们的输入/输出/错误管道,并获取它们的返回码。
基本概念
- 子进程:子进程是独立于父进程运行的程序。父进程可以通过 subprocess 模块启动子进程,并与子进程进行交互。
- 管道(Pipe):管道是一种用于进程间通信的机制。subprocess 允许父进程通过管道与子进程的标准输入(stdin)、标准输出(stdout)和标准错误(stderr)进行交互。
常用方法
- subprocess.run():用于运行子进程
- subprocess.Popen():是一个低级接口,提供了对子进程的更细粒度的控制。
- subprocess.check_call():运行命令,如果返回非零退出码,则抛出异常。
- subprocess.check_output():运行命令并捕获输出,如果返回非零退出码,则抛出异常。
- subprocess.call():运行命令并返回退出码。
subprocess.Popen 是 Python 中用于创建和管理子进程的低级接口。它提供了非常灵活的参数配置,允许用户对子进程的启动、输入、输出、错误处理等进行精细控制。
class 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=None, startupinfo=None, creationflags=0,
restore_signals=True, start_new_session=False, pass_fds=(), *,
encoding=None, errors=None, text=None
)
参数详解:
1. args
含义:指定要运行的命令及其参数。
取值: 列表形式:推荐方式,如 ['ls', '-l', '/path/to/directory']。这种方式更安全,避免了 shell 注入问题。 字符串形式:仅当 shell=True 时有效,如 'ls -l /path/to/directory'。这