本帖最后由 darkreg 于 2023-5-19 20:10 编辑
1.想法介绍
我有30多个大文本文件要批量分割 ,论坛搜了下没有发现批量处理的,就自己动手写个吧
2.软件功能:
1、自动识别当前文件夹下的TXT文件并且分割拆分成100M一个文件(需要分割其他大小和格式 稍微修改下代码即可)
2、不会出现分割后乱码或其他编码问题
3、可单独处理一个大文件也可以批量处理多个大文件
4、文件很小,好操作好保存
3.使用效果
[Python] 纯文本查看 复制代码 import os
def split_file(file_path, max_size):
# 获取文件名和扩展名
file_dir, file_name = os.path.split(file_path)
file_base_name, file_ext = os.path.splitext(file_name)
# 打开源文件
with open(file_path, 'rb') as source_file:
# 读取源文件内容
content = source_file.read()
# 计算文件大小
file_size = len(content)
# 计算拆分文件的数量
split_count = file_size // max_size + 1
# 拆分文件
for i in range(split_count):
# 构造拆分后的文件名
split_file_name = f"{file_base_name}_{i}{file_ext}"
split_file_path = os.path.join(file_dir, split_file_name)
# 计算当前拆分文件的起始位置和结束位置
start = i * max_size
end = (i + 1) * max_size if i < split_count - 1 else file_size
# 写入拆分文件
with open(split_file_path, 'wb') as split_file:
split_file.write(content[start:end])
print(f"拆分文件 {split_file_name} 创建成功")
# 获取当前文件夹中的文本文件
file_list = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.txt')]
# 拆分每个文本文件
for file_path in file_list:
split_file(file_path, 100 * 1024 * 1024) # 拆分为每个文件大小不超过100MB
[Python] 纯文本查看 复制代码 import os
def split_file(file_path, max_size):
# 获取文件名和扩展名
file_dir, file_name = os.path.split(file_path)
file_base_name, file_ext = os.path.splitext(file_name)
# 打开源文件
with open(file_path, 'rb') as source_file:
# 获取文件大小
file_size = os.path.getsize(file_path)
# 计算拆分文件的数量
split_count = file_size // max_size + 1
# 拆分文件
for i in range(split_count):
# 构造拆分后的文件名
split_file_name = f"{file_base_name}_{i}{file_ext}"
split_file_path = os.path.join(file_dir, split_file_name)
# 计算当前拆分文件的起始位置和结束位置
start = i * max_size
end = min((i + 1) * max_size, file_size)
# 写入拆分文件
with open(split_file_path, 'wb') as split_file:
with open(file_path, 'rb') as source_file:
source_file.seek(start)
split_file.write(source_file.read(end - start))
print(f"拆分文件 {split_file_name} 创建成功")
# 获取指定目录下的指定类型文件
def get_files(directory, file_extension):
file_list = []
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(file_extension):
file_list.append(os.path.join(root, file))
return file_list
# 拆分每个文本文件
def split_files(directory, file_extension, max_size):
file_list = get_files(directory, file_extension)
for file_path in file_list:
split_file(file_path, max_size)
# 设置参数
directory = '.' # 当前目录
file_extension = '.txt' # 文件类型为txt
max_size = 100 * 1024 * 1024 # 拆分文件大小不超过100MB
# 拆分文件
split_files(directory, file_extension, max_size)
第二段适合大文件,如果文件特别大,可以用第二段python代码就不会卡死,使用os.path.getsize(file_path)来获取文件大小,如果处理小文件比如几个G的 那一段代码就可以了
感谢大家 来到吾爱也好久了,赠人玫瑰手有余香,免费评分走走奥~
|