import os
import subprocess
def extract_7z_files_with_winrar(folder_path, output_folder):
# 确保输出文件夹存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 遍历指定文件夹中的所有文件
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith('.7z'):
file_path = os.path.join(root, file)
print(f"正在解压: {file_path}")
# 创建每个压缩包对应的子文件夹
sub_output_folder = os.path.join(output_folder, os.path.splitext(file)[0])
if not os.path.exists(sub_output_folder):
os.makedirs(sub_output_folder)
# 构建 winrar 命令
rar_command = f'"C:\\Program Files\\WinRAR\\WinRAR.exe" x "{file_path}" "{sub_output_folder}"'
# 执行 winrar 命令
try:
result = subprocess.run(rar_command, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(result.stdout.decode('gbk')) # 使用 gbk 解码以适应中文字符
print(f"已解压到: {sub_output_folder}")
except subprocess.CalledProcessError as e:
print(f"解压失败: {e.stderr.decode('gbk')}") # 使用 gbk 解码以适应中文字符
if __name__ == "__main__":
folder_path = r'C:\Users\xxx\AppData\Local\Temp' # 替换为您的文件夹路径
output_folder = r'C:\path\to\extracted_files' # 替换为您希望存放解压文件的文件夹路径
extract_7z_files_with_winrar(folder_path, output_folder)
Python 使用 WinRAR 解压 .7z 文件
于 2025-06-08 21:43:56 首次发布