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

如何解决PyPDF2合并PDF时出现的Errno 22无效参数错误?

解决PyPDF2合并PDF时的OSError: [Errno 22] Invalid argument问题

错误根源

报错是因为代码里用{book_title}.pdf作为输出文件名,而book_title大概率包含Windows系统不允许的文件名字符(比如:, *, ?, ", <, >, |),或者存在不可见的控制字符、编码异常,导致系统无法识别这个文件名,抛出无效参数错误。

修复方案

1. 过滤非法文件名字符

写一个简单函数,把Windows禁止的字符替换成下划线(或其他合法字符):

def sanitize_filename(filename):
    # Windows系统禁止的文件名字符集合
    illegal_chars = '<>:"/\\|?*'
    for char in illegal_chars:
        filename = filename.replace(char, '_')
    # 去除首尾空白字符
    return filename.strip()

然后修改你的代码,用清理后的文件名:

clean_title = sanitize_filename(book_title)
merger.write(f"{clean_title}.pdf")

2. 清理隐藏控制字符

如果book_title是从网页抓取的,可能带有换行符、制表符这类不可见控制字符,额外添加清理逻辑:

import string

def sanitize_filename(filename):
    # 先移除所有控制字符
    filename = ''.join(char for char in filename if char not in string.control)
    # 再替换非法字符
    illegal_chars = '<>:"/\\|?*'
    for char in illegal_chars:
        filename = filename.replace(char, '_')
    return filename.strip()

3. 快速验证问题

先把文件名换成固定的简单名称,确认是不是文件名的问题:

merger.write("test_merge.pdf")

如果这个能成功运行,就百分百确定是book_title的问题,再按上面的方案处理即可。

额外注意事项

  • 文件名长度别超过Windows的限制(一般是260字符),过长的话可以截断处理。
  • 确保输出目录有写入权限,要是脚本没权限保存文件也会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:25:18