这里介绍两种方法:1、批处理;2、python
参考文章:1、批处理;2、python
总结:python比批处理速度快很多,源代码如下
1、批处理:
@echo off & setlocal enabledelayedexpansion
set /a m=0,n=0
for /f "delims=" %%a in (test.txt) do (
set /a n=m/1048576
set /a m=m+1
echo %%a >>test!n!.txt
)
2、python:
def split():
# 读取源文件,文件名最好加上绝对路径
with open('test.txt', 'r') as f:
# 把数据写入列表
wordlist = f.readlines()
# 算出总行数
length = len(wordlist)
# 设置每个拆分文件的行数
unit = 1048576
# 计算新文件的个数,如果总行数整除新文件行数,就取这个商的值,如果不整除,取商加1的值
file_amount = length // unit + 1 if length % unit > 0 else length // unit
# 遍历所有新文件
for num in range(file_amount):
# 计算新文件中第一行在源文件中对应的行号
start = num * unit
# 计算新文件中最后一行在源文件中对应的行号
end = length if length < (num + 1) * unit else (num + 1) * unit
# 写入新文件,文件名最好加上绝对路径
with open(str(num + 1) + '.txt', 'w+') as f:
# 遍历新文件的所有行
for i in range(start, end):
# 把列表中的数据写入新文件
f.write(wordlist[i])
if __name__ == '__main__':
split()