linux文件操作
linux
本文字数:327 字 | 阅读时长 ≈ 1 min

linux文件操作

linux
本文字数:327 字 | 阅读时长 ≈ 1 min

1. zip 文件解压

如果你有多个 zip 文件,并没有快速解压单个 zip 文件的方法, 但是可以同时解压多个 zip 文件

1.1 python 多线程解压

以下是最终的 ZIP 解压主程序代码, 需要安装 7z, ubuntu 安装 sudo apt-get install p7zip-full

import os
import subprocess
from concurrent.futures import ThreadPoolExecutor
from tqdm import tqdm

# ZIP文件列表
zip_list = [
    'ALFRED.zip', 
]

# 指定ZIP文件所在的文件夹
zip_folder = '/llm-cfs-nj/person/harryyhwang/dataset/M4-Instruct-Data'
# 指定解压的目标文件夹
target_folder = '/llm-cfs-nj/person/harryyhwang/dataset/M4-Instruct-Data'

def extract_with_7zip(zip_filename):
    """ 使用7-zip解压文件到指定目录 """
    zip_path = os.path.join(zip_folder, zip_filename)
    extract_path = os.path.join(target_folder, zip_filename[:-4])
    os.makedirs(extract_path, exist_ok=True)
    command = ["7z", "x", "-aoa", f"-o{extract_path}", zip_path]
    subprocess.run(command, check=True)
    return f"{zip_filename} has been extracted to {extract_path}"

# 使用线程池来并发解压文件
with ThreadPoolExecutor(max_workers=5) as executor:
    results = list(tqdm(executor.map(extract_with_7zip, zip_list), total=len(zip_list)))

for result in results:
    print(result)

print("All files have been extracted.")

7-Zip的相关参数说明:
-aos:跳过已存在的文件(Skip extracting of existing files)
-aoa:覆盖所有文件(Overwrite All existing files without prompt)
-aou:自动重命名提取的文件(Auto-rename extracted files)
-aot:自动重命名已存在的文件(Auto-rename existing files)

4月 06, 2025
3月 10, 2025
11月 25, 2024