同级目录下创建 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)
网友评论