01_数据分析_大文件分割成小文件

#
# 大文件分割成小文件(方便打开查看,大文件打开需要很多时间)
# 
import sys as sys
import os
import re

#要分割的文件 
source_file_path='F:/#00.log'
sub_file_line_cnt = 1780000 #子文件的行数

#单个文件分割成小文件,source_file:单个文件的绝对路径
def one_big_file_split_func(source_file):
    f = open(source_file,'r') #打开文件
    source_file_line_cnt = len(f.readlines())   #获取文件行数

    # 截取文件名中的数字,为了命名使用
    idx_rules = re.compile(r'#(.*?).log')
    newfile_name = re.findall(idx_rules,source_file)[0]

    i = 0 #设置计数器
    while i < source_file_line_cnt : #轮询到末尾行
        with open(str(newfile_name) + '_' + str(i),'w') as f1:  #创建子文件
            for j in range(0, sub_file_line_cnt) : #这里设置每个子文件的大小
                if i < source_file_line_cnt : #这里判断是否已结束,否则最后可能报错
                    f1.writelines(f.readline())
                    i = i+1
                else:
                    break
    f.close()

#文件夹内所有文件分割,all_file_path:文件夹路径
def all_big_file_split_func(all_file_path):
    # 遍历所有#***.log
    for folders,subfolders,files in os.walk(all_file_path):
        if file.endswith('.log'):   #文件夹内要分割的文件后缀(根据自己实际选择)
                # 构造绝对路径
                file_name = os.path.join(folders,file)
                one_big_file_split_func(file_name)

    pass

all_file_path = "xxxxxxxxxx"
if __name__ == '__main__':
    #one_big_file_split_func(source_file_path)
    all_big_file_split_func(all_file_path)
    pass


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值