You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在终端通过Python批量处理序号命名的PDF文件?

批量处理序号命名PDF的两种有效方法

你之前写的Python循环无法运行,是因为把Python语法和终端命令混在一起了——Python不能直接这样执行终端命令。下面给你两种简单的解决办法:

方法一:直接用终端命令循环(不用改脚本)

根据你使用的操作系统,选择对应的命令执行:

  • Linux/macOS(bash/zsh终端):
    for i in {1..100}; do python process_pdf.py "$i".pdf; done
    
  • Windows 命令提示符(cmd):
    for /L %i in (1,1,100) do python process_pdf.py %i.pdf
    
  • Windows PowerShell:
    1..100 | ForEach-Object { python process_pdf.py "$_.pdf" }
    

方法二:修改Python脚本支持批量处理(更推荐)

直接在原脚本里添加批量处理逻辑,以后不用每次敲循环命令。修改后的脚本如下:

import sys, fitz
from pathlib import Path

# 定义单个PDF处理函数
def process_single_pdf(fname):
    # 先检查文件是否存在
    if not Path(fname).exists():
        print(f"跳过:文件 {fname} 不存在")
        return
    try:
        doc = fitz.open(fname)
        # 自动生成对应txt文件名(替换PDF后缀)
        txt_path = Path(fname).with_suffix(".txt")
        with open(txt_path, "wb") as out:
            for page in doc:
                text = page.get_text().encode("utf8")
                out.write(text)
        print(f"处理完成:{fname} → {txt_path}")
    except Exception as e:
        print(f"处理 {fname} 出错:{str(e)}")

if __name__ == "__main__":
    # 支持两种调用方式
    if len(sys.argv) == 2:
        # 保持原有的单个文件处理功能
        process_single_pdf(sys.argv[1])
    elif len(sys.argv) == 3:
        # 批量处理:传入起始和结束序号,比如 python process_pdf.py 1 100
        try:
            start = int(sys.argv[1])
            end = int(sys.argv[2])
            for i in range(start, end + 1):
                pdf_name = f"{i}.pdf"
                process_single_pdf(pdf_name)
        except ValueError:
            print("错误:起始和结束序号必须是整数")
    else:
        print("使用说明:")
        print("1. 处理单个PDF:python process_pdf.py 文件名.pdf")
        print("2. 批量处理序号PDF:python process_pdf.py 起始序号 结束序号")

修改后,直接在终端执行以下命令就能批量处理1到100的PDF:

python process_pdf.py 1 100

内容的提问来源于stack exchange,提问作者Bryant Tan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:05:19