文档章节

遍历目录下的文件每250M打包一个文件

寻爱的小草
 寻爱的小草
发布于 07/21 01:15
字数 322
阅读 3
收藏 1
def

#!/usr/bin/env python
# -*- utf-8 -*-
# @Time     : 2018/7/20 0020 下午 10:16
# @Author   : 陈元
# @Email    : abcmeabc@163.com
# @file     : tarFile.py
import os
import tarfile
import threading
import time


class TarFile():

    def __init__(self):
        pass

    #打包多个文件
    def tarFileList(self,fname,flist):
        tar = tarfile.open(fname+'.tar','w')
        for file in flist:
            tar.add(file)
        tar.close()

    def tar(self,fname):
        tar = tarfile.open(fname+'.tar',"w")
        for root,dir,files in os.walk(fname):
            for file in files:
                fpath = os.path.join(root,file)
                tar.add(fpath)
        tar.close()

    def untar(self,fname,dirs):
        tar = tarfile.open(fname)
        tar.extractall(path=dirs)

    def getFileList(self,path):
        start = time.time()
        dirs = os.listdir(path)
        for dir in dirs:
            newPath = os.path.join(path,dir)
            if os.path.isdir(newPath):
                print(dir)
                self.getChildFileList(newPath,dir)

        end = time.time()
        print("all time : {0}".format(end-start))
        pass
    # 递归子目录
    def getChildFileList(self,path,fname):
        dirs = os.listdir(path)
        tFileList = []
        fileNum = 0
        sizeSum = 0
        count = len(dirs)
        thread = []
        for dir in dirs:
            count = count - 1
            newPath = os.path.join(path,dir)
            fname = fname+'_'+dir
            if os.path.isdir(newPath):
                #self.getChildFileList(newPath,fname)
                t = threading.Thread(target=self.getChildFileList,args=(newPath,dir))
                t.start()
                thread.append(t)
            elif os.path.isfile(newPath):
                size = os.path.getsize(newPath)
                sizeSum = sizeSum + size
                sizeM = sizeSum/1024/1024
                if sizeM < 250:
                    tFileList.append(dir)
                elif sizeM >= 250 or count == 0:
                    os.chdir(path)
                    print(path)
                    fileNum = fileNum + 1
                    fname = fname + '_' + str(fileNum)
                    #self.tarFileList(fname,tFileList)
                    # t = threading.Thread(target=self.tarFileList,args=(fname, tFileList))
                    # t.start()
                    # thread.append(t)
                    print(fname)
                    sizeSum = 0
                    del tFileList[:]
                else:
                    print("error... size")
            else:
                print("error...not dir file")

        for t in thread:
            t.join()
        pass

def run():
    pass


def main():
    # try:
        tFile = TarFile()
        tFile.getFileList("V:\\")
    # except :
    #     print("error")
    # pass


if __name__ == '__main__':
    main()
 

© 著作权归作者所有

共有 人打赏支持
寻爱的小草
粉丝 1
博文 94
码字总数 18953
作品 0
广州
运维
私信 提问
webpack+react多页面开发终极架构

webpack在单页面打包上应用广泛,以create-react-app为首的脚手架众多,单页面打包通常指的是将业务js,css打包到同一个html文件中,整个项目只有一个html文件入口,但也有许多业务需要多个页...

leinov
11/08
0
0
webpack+react多页面开发(二)-终极架构

webpack4+react16多页面架构 webpack在单页面打包上应用广泛,以create-react-app为首的脚手架众多,单页面打包通常指的是将业务js,css打包到同一个html文件中,整个项目只有一个html文件入...

frontman
11/08
0
0
IntelliJ IDEA WEB项目的部署配置

1.前言 虽说Intellij IDEA已经用了四个多月,里面大部分功能还是比较熟悉的,但是很多细节地方还是搞不清楚,这几天公司另一个小组也换成了Intellij IDEA,帮他们迁移项目的时候,因为是非m...

BenettX
2014/11/30
0
0
Python实现批量解析PDF文件提取内容并写入到Excel中

摘要:最近需要将一批PDF文件中的某些数据整理到Excel中,因为文件数量接近20w+,手动更新几乎不现实,于是就提取关键词和内容动手写了个Python小工具,以实现自动完成上述目标。 要求: 基本...

_周小董
05/20
0
0
文件(含多级子目录)的打包和解包 C++代码实现

  在公司做项目的时候,有打包和解包文件的需求,而文件为任意类型(eg:txt、exe、dll、jpg、osg、bmp、avi...),刚遇到这个问题,满脑子都是这么多格式的文件仅用打包和解包两个接口如...

才疏学浅、
08/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
8
0
让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
今天
4
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
今天
18
0
Xshell利用Xftp传输文件,使用pure-ftpd搭建ftp服务

Xftp传输文件 如果已经通过Xshell登录到服务器,此时可以使用快捷键ctrl+alt+f 打开Xftp并展示Xshell当前的目录,之后直接拖拽传输文件即可。 pure-ftpd搭建ftp服务 pure-ftpd要比vsftp简单,...

野雪球
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部