2019独角兽企业重金招聘Python工程师标准>>>

#!/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()

转载于:https://my.oschina.net/u/3824134/blog/1860417

遍历目录下的文件每250M打包一个文件相关推荐

  1. Python遍历目录下的文件(os.walk 、os.listdir的用法)

    Python遍历目录下的文件(os.walk .os.listdir的用法) 最近想从一个目录转移一些文件到另外一个目录,因为文件有指定的后缀,所以想着用python来转移,不做cv工程师,那就涉及到 ...

  2. Linux和Windows的遍历目录下所有文件的方法对比

    首先两者读取所有文件的方法都是采用迭代的方式,首先用函数A的返回值判断目录下是否有文件,然后返回值合法则在循环中用函数B直到函数B的返回值不合法为止.最后用函数C释放资源. 1.打开目录 #inclu ...

  3. os.walk 遍历目录下目录和文件

    python中os.walk是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. 1.载入 要使用os.walk,首先要载入该函数 可以使用以下两种方法 import os ...

  4. php 遍历 目录,PHP采用自定义函数实现遍历目录下所有文件的方法

    目录的遍历是PHP程序设计中经常会用到的一个功能,很多PHP项目都有这一功能模块.今天本文就来实例解析一下PHP采用自定义函数实现遍历目录下所有文件的方法.具体方法如下: 方法一:使用readir() ...

  5. windows遍历目录下所有文件

    From: http://blog.csdn.net/benbon/article/details/1911230 在windows中遍历目录下的所有文件主要是使用FindFirstFile和Find ...

  6. java 递归 遍历目录下的所有文件

    public class Demo{static int level;public static void main(String[] args) throws IOException {//利用递归 ...

  7. 递归 遍历目录下的所有文件

    public class Demo{static int level;public static void main(String[] args) throws IOException {//利用递归 ...

  8. linux sed 目录递归,shell递归遍历目录下的所有文件并统一改名的方法-文件更名...

    对Linux开发技术感兴趣或者是从事Linux开发技术的小伙伴是否知道如何把某个目录下的每个文件统一在名字前加上"abc",用shell实现呢?下面就随Linux培训小编来了解一下 ...

  9. File类(常用方法、遍历目录下的文件、listFiles()方法和删除文件及目录)

    File类 File类的常用方法 Filie类常用的构造方法 File(String pathname) //通过指定的一个字符串类型的文件路径来创建一个新的File对象 File(String pa ...

最新文章

  1. CommunityServer研习心得(转)
  2. 百度地图infowindow
  3. 如何将切换anaconda 的Python 版本
  4. [How TO]-virtualbox下安装ubuntu14.04超详细
  5. 惠普z840工作站linux,HP Z840 工作站,高清非编工作站
  6. linux查看fifo内容,linux 有名管道(FIFO)
  7. 机器人煮面机创始人_秋天的第一杯枸杞拿铁,由机器人冲泡
  8. GNU make manual 翻译( 一百零四)
  9. liux 常用操作命令
  10. java拆分任意五位数_五位数拆分出各位 - osc_foo7glsg的个人空间 - OSCHINA - 中文开源技术交流社区...
  11. php extjs 教程,Exjs 入门篇_extjs
  12. 【DIOCP-DEMO说明】所有演示DEMO的简要说明
  13. JAVA面试宝典2018-2019
  14. python xlwt 写入Excel
  15. Nginx入门以及开源博客Tale的部署
  16. 应用计算机测定线性电阻伏安特性实验报告,电阻伏安特性曲线实验报告.docx
  17. 《我是谁:没有绝对安全的系统》观影感受
  18. paddleocr训练自己的数据最简单方式软件一键训练
  19. 第四课:点亮LED灯
  20. 微信小程序相册-笔记1

热门文章

  1. SqlServer中怎样从Excel中导入数据
  2. DevExpress的TextEdit限制输入内容的格式,比如只能输入数字
  3. SpringBoot中用itext实现PDF导出时实现循环添加元素
  4. Tomcat提示:Error starting static Resources......
  5. springbatch的reader,如何使用mybatis?使用MyBatisCursorItemReader可以完美解决
  6. Flutter基础笔记
  7. java h5在线音频_[语音技术]java+H5的录音类实例(1)
  8. 神策数据:从技术视角看,如何更多、更好、更快地实施A/B试验
  9. 付力力: 基于 ImpalaS 构建实时用户行为分析引擎
  10. 洛谷 P2048 [NOI2010]超级钢琴(优先队列,RMQ)