美文网首页
大文件切割成 n 个小文件

大文件切割成 n 个小文件

作者: Canon_2020 | 来源:发表于2020-04-20 09:44 被阅读0次

同级目录下创建 testdata 和 data 文件夹,执行 split_files.py


import os
import time


def cut_files(file_path, new_file_path, file_size):
    # 找到文件路径
    path_dir = os.listdir(file_path)
    list_ips = []
    file_index, new_file_index = 0, 0
    length = len(path_dir)
    # 大循环,负责向后推进文件个数
    while file_index < length:
        # 第一个小循环,负责将列表长度填充到 new_file_size 之上
        while len(list_ips) < file_size and file_index < length:
            filepath = file_path + path_dir[file_index]
            file_index += 1
            f = open(filepath, "r+")
            for line in f:
                list_ips.append(line[:-1])
            f.close()
        # 对于此时列表,每 new_file_size 个内容写到一个文件中,剩余的进入下一次填充
        while len(list_ips) >= file_size:
            # format 作用: 使整数个数为2, 小数个数为零,前面位数不够补零
            f = open(new_file_path + "user" + str(format(new_file_index, '02.0f'))+".csv", "w")
            for ip in list_ips[0:file_size]:
                f.write(ip + "\n")
            f.close()
            list_ips = list_ips[file_size:]
            new_file_index += 1
    # 最终列表中剩余的内容写到最后一个新文件中
    f = open(new_file_path + "user" + str(format(new_file_index, '02.0f'))+".csv", "w")
    for ip in list_ips:
        f.write(ip + "\n")
    f.close()


if __name__ == "__main__":
    # 源文件目录
    file_dir = "data/"
    # 切割后文件存储目录
    new_file_dir = "testdata/"
    # 切割后每个文件大小 (行数)
    new_file_size = 16390
    # 计时开始
    # t1 = time.time()
    cut_files(file_dir, new_file_dir, new_file_size)
    # 输出时间
    # print("time:", time.time()-t1)

相关文章

网友评论

      本文标题:大文件切割成 n 个小文件

      本文链接:https://www.haomeiwen.com/subject/qlftwctx.html