系列文章目录
前言
提示:以下是本篇文章正文内容,以拆分密码字典为例;
一、python拆分大文本文件
拆分结果如下:
1.源码
代码如下(示例):
# -*- coding:utf-8 -*-
from datetime import datetime
def split():
source_dir =r'E:\py\python3.7\test\test50mimapojie\zipCrack-master\替换文件\密码字典\6.txt'
target_dir =r'E:\py\python3.7\test\test50mimapojie\zipCrack-master\替换文件\密码字典\zidian'
# 计数器
flag = 0
# 文件名
name = 1
# 存放数量
dataset = []
print("开始拆分……")
print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
# 读取source文件,每1000000行写入到一个新的文件中(可自行设定,由于密码字典行数过多,此处选择100万行为一个文件)
with open(source_dir,'r',encoding='utf-8') as f_source:
for line in f_source:
flag += 1
dataset.append(line)
if flag == 1000000:
with open(target_dir + "target" + str(name) + ".txt",'w+',encoding='utf-8') as f_target:
for data in dataset:
f_target.write(data)
name += 1
flag = 0
dataset = []
# 处理最后不到2000行的数据
with open(target_dir + "target" + str(name) + ".txt",'w+',encoding='utf-8') as f_target:
for data in dataset:
f_target.write(data)
print("拆分完成!")
print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
def main():
split()
if __name__ == "__main__":
main()
二、可能遇到的问题
错误编码:
UnicodeDecodeError: 'gbk' codec can't decode byte 0x85 in position 5716: illegal multibyte sequence
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf1 in position 933: invalid continuation byte
1.原因排查
错误的意思是:Unicode的解码出现错误;
2.问题解决
打开文件另存为,编码方式选择UTF-8;
三、拆分源码二
#!/usr/bin/python
file_read = '1.txt'
def get_file_list(file_read):
line_list = []
with open(file_read,'r',encoding='utf-8') as file_object:
lines = file_object.readlines()
for line in lines:
line = line.strip('\n')
line_list.append(line)
return line_list
ret = get_file_list(file_read)
line_number = 10000 #要拆分1个列表多少个元素
diff_match_split = [ret[i:i + line_number] for i in range(0, len(ret),line_number)]#列表推导式,分出小列表
for file_number in range(len(diff_match_split)):#遍历长度
with open('batch_%d.txt' %(file_number), 'w+') as temp:#根据索引命名文件
for line in diff_match_split[file_number]:#根据大列表索引遍历小列表写入文件
temp.write(line+'\n')
总结
分享:
量子力学的平行多宇宙学说,在交叉小径的花园里总会有一条路,让人们在生命中的每一个节点都得到幸福。 在每一次铭心刻骨的选择里,总有一个你选对了路 。在茫茫的恒河沙数的宇宙里,总有一个你,终生幸福。