Python 大文件分割 - 增加进度条

Python 基础学习

Python 大文件分割 - 增加进度条

-- coding:utf-8 --

from datetime import datetime

def main(source_dir, target_dir ):

# 计数器
flag = 0

# 文件名
name = 1

# 存放数据
datalist = []

import time
print("开始。。。。。")
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))

with open(source_dir,  mode='r', newline='', encoding='utf-8') as f_source:


    for line in f_source:
        flag += 1
        datalist.append(line)
        if flag == 300000:

            import tqdm
            with tqdm.tqdm(range(len(datalist))) as tbar:
                # with open(target_dir + "jz_yuanshi_list_" + str(name) + ".txt", 'w+') as f_target:
                with open(target_dir +  str(name).zfill(3) + ".txt", mode='a+', newline='', encoding='utf-8') as f_target:
                    print(str(name).zfill(3))
                    j=0;
                    for data in datalist:
                        j=j+1
                        if j==1 and  len(data)>0:
                            f_target.write(data.strip())
                        else:
                            if len(data) > 0:  # 最后一行不为空,才写入
                                f_target.write('\n'+data.strip() )

                        # percent = str(format(float(j / len(datalist)) * 100, '.3f')) + '%'
                        # tbar.set_description(
                        #     '正在写入' + str(j).zfill(10) + '.png' + '_' + str(len(datalist)) + '_' + percent)
                        # # tbar.set_postfix(k=num, v=v)
                        # tbar.set_postfix(k=j)
                        # tbar.update()

                name += 1
                flag = 0
                datalist = []

# 处理最后一批行数少于200万行的
# with open(target_dir + "jz_yuanshi_list_" + str(name) + ".txt", 'w+') as f_target:
with open(target_dir +  str(name).zfill(3) + ".txt", mode='a+', newline='', encoding='utf-8') as f_target:
    with tqdm.tqdm(range(len(datalist))) as tbar:
        print(str(name).zfill(3))
        j=0
        for data in datalist:
            j = j + 1
            if j == 1 and len(data) > 0:
                f_target.write(data.strip())
            else:
                if len(data) > 0:  # 最后一行不为空,才写入
                    f_target.write('\n' + data.strip())

            # percent = str(format(float(j / len(datalist)) * 100, '.3f')) + '%'
            # tbar.set_description(
            #     '正在写入' + str(j).zfill(10) + '.png' + '_' + str(len(datalist)) + '_' + percent)
            # # tbar.set_postfix(k=num, v=v)
            # tbar.set_postfix(k=j)
            # tbar.update()


print("完成。。。。。")
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))

if name == “main”:
source_dir = ‘F:/250.txt’
target_dir = ‘F:/’
main(source_dir, target_dir )

参考:http://www.zzvips.com/article/159519.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值