如何在终端通过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
相关产品推荐
相关产品推荐

