python自动扫描当前文件夹里所有 .txt 全部切割
import os
def split_file(input_file, lines_per_file=2000, output_dir='output'):
"""
将 input_file 按每 lines_per_file 行分割成多个文件,保存到 output_dir。
输出文件名格式:原文件名_part001.txt, 原文件名_part002.txt ...
返回 (总行数, 分片数)
"""
os.makedirs(output_dir, exist_ok=True)
base_name = os.path.splitext(os.path.basename(input_file))[0]
part_num = 1
line_count = 0
out_file = None
with open(input_file, 'r', encoding='utf-8') as f:
for line in f:
if line_count % lines_per_file == 0:
if out_file:
out_file.close()
out_filename = f"{base_name}_part{part_num:03d}.txt"
out_path = os.path.join(output_dir, out_filename)
out_file = open(out_path, 'w', encoding='utf-8')
part_num += 1
out_file.write(line)
line_count += 1
if out_file:
out_file.close()
return line_count, part_num - 1
def main():
# 自动扫描当前文件夹下所有 .txt(不递归,不含 output 里的文件)
files = [
f for f in os.listdir('.')
if f.lower().endswith('.txt') and os.path.isfile(f)
]
if not files:
print("没有找到可切割的 txt 文件")
return
total_files = 0
total_lines = 0
total_parts = 0
for file in files:
lines, parts = split_file(file, lines_per_file=2000, output_dir='output')
total_files += 1
total_lines += lines
total_parts += parts
print(f"✓ 已完成 {total_files} 个(共 {lines} 行 → {parts} 个分片)")
print("-" * 40)
print(f"全部完成:共 {total_files} 个文件,{total_lines} 行,生成 {total_parts} 个分片")
print(f"输出目录:{os.path.abspath('output')}")
if __name__ == '__main__':
main()

更新时间:2026-09-14 13:06:26
上一篇:PbootCMS V3.2.24 build 2026-09-01