本文介绍: 我们使用subprocess.run()函数执行zip命令,并使用-r参数递归地压缩文件,将file1.txtfile2.txt压缩为archive.zip使用unzip命令可以解压文件,如果我们想要排除某个文件夹可以在压缩命令使用x参数指定要排除的文件夹。你可以使用concurrent.futures.ProcessPoolExecutor来并行执行多个命令,从而提高程序的性能。在这个例子中,我们使用subprocess.run()函数执行ls -l命令,并捕获其输出

Pythonsubprocess模块一个强大的工具,它允许你在Python执行外部命令,并与其进行交互

1. subprocess模块的基本用法


import subprocess
result = subprocess.run(["ls", "-l"], capture_output=True, text=True)
print(result.stdout)

在这个例子中,我们使用subprocess.run()函数来执行ls -l命令,并捕获其输出

2. 控制输入输出

        subprocess模块提供了多种方式控制命令的输入输出。例如,你可以使用stdin参数来提供命令的输入,使用stdoutstderr参数来捕获命令的标准输出错误输出。此外,你还可以使用subprocess.PIPE来创建管道,将命令的输入输出重定向到Python程序中。


import subprocess
# 通过stdin参数提供输入
result = subprocess.run(["grep", "hello"], input="hello worldnhello pythonn", capture_output=True, text=True)
# 捕获标准输出错误输出
print(result.stdout)
print(result.stderr)

3. subprocess模块还提供了许多高级的交互技巧

可以使用subprocess.Popen类来创建一个进程对象,并使用communicate()方法来与其进行交互。这使得你可以向进程发送信号、向其输入数据,并获取其输出


import subprocess
# 创建进程对象
process = subprocess.Popen(["cat"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 向进程输入数据并获取输出
output, _ = process.communicate("Hello, subprocess!")
print(output)

4. 并行执行多个命令

subprocess模块提供了concurrent.futures模块来实现这一点。你可以使用concurrent.futures.ProcessPoolExecutor来并行执行多个命令,从而提高程序的性能。


import subprocess
from concurrent.futures import ProcessPoolExecutor
def run_command(command):
    result = subprocess.run(command, capture_output=True, text=True)
    return result.stdout
commands = [["ls", "-l"], ["pwd"], ["echo", "Hello, subprocess!"]]
with ProcessPoolExecutor() as executor:
    results = list(executor.map(run_command, commands))
print(results)

5. 文件压缩实操

Python的subprocess模块可以用来执行外部命令,并与其进行交互。在Windows系统中,可以使用subprocess模块来压缩文件,并排除某个文件夹


import subprocess
# 压缩文件
subprocess.run(['zip', '-r', 'archive.zip', 'file1.txt', 'file2.txt'])
# 解压文件
subprocess.run(['unzip', 'archive.zip'])

我们使用subprocess.run()函数来执行zip命令,并使用-r参数来递归地压缩文件,将file1.txtfile2.txt压缩为archive.zip。使用unzip命令可以解压文件,如果我们想要排除某个文件夹,可以在压缩命令中使用-x参数来指定要排除的文件夹。例如,假设我们想要排除名为exclude_folder的文件夹,可以这样写:


import subprocess
# 压缩文件并排除文件夹
subprocess.run(['zip', '-r', 'archive.zip', '-x', 'exclude_folder/*', 'file1.txt', 'file2.txt'])

在上面的代码中,我们使用-x参数来指定要排除的文件夹,其值为exclude_folder/*。

原文地址:https://blog.csdn.net/mywpython/article/details/134695820

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_7943.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注