我的知识记录

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()

python自动扫描当前文件夹里所有 .txt 全部切割

标签:

更新时间:2026-09-14 13:06:26

上一篇:PbootCMS V3.2.24 build 2026-09-01

下一篇:Python批量重命名文件(加前缀/序号)-日常办公最常用的 Python 小工具