python--大文件命名

在这里插入图片描述

python大文件命名的知识点来咯,请注意看。

文件按照开始、结束行时间戳重命名

用法:

python get_name_logfile.py log.txt
python get_name_logfile.py logs
参数选择文件或者文件夹均可,如果是文件夹,则会针对文件夹中的每个文件做处理(不会递归到文件夹下文件夹中的文件哦);

 # -*- coding:utf-8 -*-


    import os,re,shutil
    import sys
    import platform

    sys_name = platform.system().lower()
    SPLIT_CHAR = '\\' if sys_name.find('windows') != -1 else '/'

    _path = sys.argv[1]
    names = []
    files = []
    pathes = []
    if os.path.isfile(_path):
        print('is file')
        names[0] = _path
    elif os.path.isdir(_path):
        print('This is dir')
        pathes = os.listdir(_path)
        print('pathes='+str(pathes))
        for i in range(len(pathes)):
            fullpath = _path+SPLIT_CHAR+pathes[i]
            print('fullpath='+fullpath)
            if os.path.isfile(fullpath):
                names.append(fullpath)
    else:
        print('is nothing')
        
    print(len(names))

    #   日期格式 : 05-26 18:20:42.093   r'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}'
    #   
    #   05-26 18:20:43.093:r'\d{2}-\d{2} {1,}\d{2}:\d{2}:\d{2}.\d{1,10}'

    date_reg = r'\d{2}-\d{2} {1,}\d{2}:\d{2}:\d{2}.\d{1,10}'
    time_reg = r'\d{2}:\d{2}:\d{2}.\d{1,10}'

    for i in range(len(names)):
        _name = names[i]
        print('name='+_name)
        # head 尝试在10行内查找日期
        head_len = 10
        start_time = '(start_time-'
        _file_ = open(_name, 'rb')
        reads = _file_.read()
        _file = reads.split('\n')
        if len(_file)/2 < 10:
            head_len = len(_file)/2
        for j in range(head_len):
            res = re.search(date_reg, _file[j])
            if res!=None and res.group(0)!=None:
                start_time = res.group(0)
                print('start_time='+start_time)
                break
        # tail
        tail_len = len(_file)-head_len
        end_time = '-end_time)'
        for j in range(len(_file)-1,tail_len-1,-1):
            res = re.search(time_reg, _file[j])
            if res!=None and res.group(0)!=None:
                end_time = res.group(0)
                print('end_time='+end_time)
                break
        _file_.close()
        ori_name = _name.split(SPLIT_CHAR)[len(_name.split(SPLIT_CHAR))-1]
        print('ori_name='+ori_name)
        new_name = start_time.replace(':','-')+'__'+end_time.replace(':','-')+os.path.splitext(ori_name)[1]
        print('new_name='+new_name)
        print("copy %s %s" % (_name, _name.replace(ori_name,new_name)))
        #os.system ("copy %s %s" % (_name, _name.replace(ori_name,new_name)))
        shutil.copy(_name,_name.replace(ori_name,new_name))
        os.system ("rm -rf "+_name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值