首页 > 其他分享 >多线程批量解压

多线程批量解压

时间:2023-04-25 17:35:28浏览次数:34  
标签:解压 join 批量 file import print path 多线程 os

import threading
import time
import os
import tarfile


input_path = r"D:\jieyaqian"
out = r'D:\jieyahou'
classs = os.listdir(input_path)



def repress(folder, input_path, out):
    print(1, folder)
    ori_tif = os.path.join(input_path, folder)
    print(ori_tif)
    name = os.path.basename(ori_tif)
    print(name)
    # 解压单个文件
    if not os.path.exists(os.path.join(out, name)):
        os.makedirs(os.path.join(out, name))
        tf = tarfile.open(ori_tif)
        tf.extractall(os.path.join(out, name))

def single():
    print('begin-------------')
    for folder in classs:
        repress(folder, input_path, out)
    print('end-------------')

def multiple():
    print('begin-------------')
    threads = []
    for folder1 in classs:
        threads.append(
            threading.Thread(target=repress(folder1, input_path, out))
        )
    for thread in threads:
        thread.start()
    for thread in threads:
        thread.join()
    print('end-------------')


if __name__ == '__main__':
    start = time.time()
    multiple()
    end = time.time()
    print('single thread cost:', end - start, 'seconds')

 批量解压zip文件

import os
import zipfile
import pathlib


def unzip_file(zip_src, dst_dir):
    r = zipfile.is_zipfile(zip_src)
    if r:
        fz = zipfile.ZipFile(zip_src, 'r')
        for file in fz.namelist():
            if pathlib.Path(file).suffix == '.zip':
                print(os.path.join(dst_dir, file), os.path.join(dst_dir, pathlib.Path(file).parent))
                unzip_file(os.path.join(dst_dir, file), os.path.join(dst_dir, pathlib.Path(file).parent))
            fz.extract(file, dst_dir)
    else:
        print('This is not zip')

unzip_file(r"D:\test\加压数据\源数据\VOCdevkit.zip", r"D:\test\加压数据\解压后")

 

标签:解压,join,批量,file,import,print,path,多线程,os
From: https://www.cnblogs.com/suoyike1001/p/17353312.html

相关文章

  • 批量删除docker过期停止的容器(全)
     过期的容器也是占用一部分的内存空间dockerps-a查看很多冗余过期的容器 这时候如果对应一个个删除容器id,有些麻烦,有没有方法对应将其批量删除呢答案:有的,本身命令行都是基于bash命令,可通过查询其容器,筛选其容器id,并将这部分容器进行删除即可关于docker的详细知识点可看我......
  • Linux解压RAR文件
    首先说明1、linux中常常会遇到一些rar结尾的文件包,靠linux本身的命令是无法实现解压rar结尾的文件夹的,需要安装rar的压缩软件才可以。2、要将服务器的账号切换为root账户,否则安装会出错。1、下载linux版本的rar软件访问RARLAB官网下载最新的、适用于自己的linux版本的rar软件......
  • Java的多线程编程模型5--Java中的CAS理论
    CAS,compareandswap的缩写,中文翻译成比较并交换。我们都知道,在java语言之前,并发就已经广泛存在并在服务器领域得到了大量的应用。所以硬件厂商老早就在芯片中加入了大量直至并发操作的原语,从而在硬件层面提升效率。在intel的CPU中,使用cmpxchg指令。在Java发展初期,java语言是不能......
  • CyclicBarrier 多线程都能“齐步走”的艺术【Java多线程必备】
    一、介绍  控制多个线程在某个时刻达到一个共同的屏障点(BarrierPoint),然后再同时继续执行。当所有线程都到达屏障点时,屏障就会打开,所有线程可以继续执行,直到下一个屏障点再次等待所有线程到达。二、特性1.可重用  当所有线程到达屏障点后,可以重置屏障,让所有线程再次从屏障......
  • linux批量处理脚本
    1.批量Killps-ef|grepjava|grep-vgrep|awk'{print$2}'|xargskill-92.统计进程数ps-ef|grepjava|grep-vgrep|awk'{print$2}'|wc3.批量打开防火墙端口1#!/bin/sh2ports=$13echo"$ports"4IFS=''5rea......
  • 多线程
    章节概述:程序(program)是为了完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和小王的过程。————生命周期如运行中的qq,运行中的MP3播放器程序......
  • 解压ZIP文件
    ``C#//#包含壓縮包相同文件名的文件//#不指定文件夹,publicstaticStringDecompress(stringName){try{stringpath="";//读取压缩文件(zip文件),准备解压缩ZipInputStreamzipInputStream=new......
  • Linux 压缩与解压
    Linux压缩与解压1.tar-z:有gzip属性的-v:显示所有过程-x:解压-c:压缩-f:指定解压的文件名,切记,这个参数是最后一个参数,后面只能接文件名实例:压缩文件(gzip)tar-zxvf[file]-C[path]解压文件(gzip)tar-zcvf[file]-C[path]列出压缩文件内容(gzip)tar-tzvftest.tar.......
  • HashMap 以及多线程基本感念
     接口Map:映射项,(键值对)的容器注意: 键是唯一的 值是可以重复的实现类HashMap :哈希表结构允许使用null值和null键线程不安全键唯一无序 linkedHashMap: 保证插入顺序和迭代顺序一致 Hashtable:数据结构:哈希表不允许使用nullnull值和null键,线程安全 ......
  • python zipfile解压文件出现中文乱码
    解压文件首先要在编写代码的开头通过import关键字来调用zipfile,再用with开头的命令来处理需要解压的文件。解决乱码情况可以通过自己创建文件夹的方式来解决,先创建一个自己的解压目录,为了区分是文件还是文件夹要获取文件大小,再把解码方式为cp437变成gbk,再对文件进行拼接,示例如下:......