美文网首页
大文件切割成 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