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

从CSV读取PDF文件名并合并PDF:CSV打乱流程优化咨询

问题解答

1. 能否省略写入新CSV的步骤?

当然可以!完全没必要多写一次中间CSV文件——你可以直接在内存里使用打乱后的文件名列表来执行PDF合并操作,这样既省磁盘空间,又能减少IO操作提升效率。

2. 整合打乱+合并PDF的实现代码

我们可以用PyPDF2库来完成PDF合并,先确保你已经安装了它:

pip install PyPDF2

下面是把打乱文件名、合并PDF整合在一起的完整代码,全程不需要生成中间CSV:

import csv
import random
from PyPDF2 import PdfMerger

# 读取原始CSV里的PDF文件名
with open('input.csv', 'r', newline='') as f:
    reader = csv.reader(f)
    # 提取所有PDF文件名,如果你的CSV有表头,记得加一行:pdf_files = pdf_files[1:] 跳过表头
    pdf_files = [row[0] for row in reader]

# 直接在内存里打乱文件名列表
random.shuffle(pdf_files)

# 初始化PDF合并工具
merger = PdfMerger()

# 逐个添加打乱后的PDF文件
for pdf_path in pdf_files:
    try:
        merger.append(pdf_path)
        print(f"已添加: {pdf_path}")
    except Exception as e:
        print(f"添加失败 {pdf_path}: {str(e)}")

# 保存最终合并的PDF
merger.write("merged_random.pdf")
merger.close()

print("PDF合并完成!文件已保存为merged_random.pdf")

代码小说明:

  • 用with语句处理文件,自动帮你关闭文件,更安全省心。
  • 加入了异常处理,就算某个PDF文件损坏或找不到,也不会导致整个程序崩溃。
  • 如果你的CSV里存的是带路径的文件名(比如./docs/R001.pdf),确保路径和代码运行目录匹配就行。

要是你已经生成了random.csv,也可以单独读取它来合并,代码如下:

import csv
from PyPDF2 import PdfMerger

# 读取已打乱的CSV文件
with open('random.csv', 'r', newline='') as f:
    reader = csv.reader(f)
    pdf_files = [row[0] for row in reader]

# 合并逻辑和上面一致
merger = PdfMerger()
for pdf_path in pdf_files:
    try:
        merger.append(pdf_path)
    except Exception as e:
        print(f"跳过 {pdf_path}: {str(e)}")

merger.write("merged_from_random_csv.pdf")
merger.close()

额外小提示

如果遇到加密的PDF文件,PyPDF2可能处理不了,这时候可以试试PyMuPDF(fitz)库,它对加密PDF的兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:14:15