Python使用预定义文件名拼接路径写入文件时出现Errno 22报错求助
Python写入文件Errno 22错误解决办法
- 变量类型不匹配
你代码中page.find('title')如果是BeautifulSoup库的方法,返回的是Tag类型对象而非纯文本字符串,直接拼接路径会携带Tag对象的隐藏属性或格式标识,导致路径格式非法。
修复代码:
# 提取title标签内的纯文本,同时去除首尾空白、换行符 page_title = page.find('title').get_text().strip()
- 文件名包含系统非法字符
所有操作系统都对文件名有合法字符限制,例如Windows禁止文件名出现\ / : * ? " < > |,如果提取的标题包含这类字符,拼接后的路径就会触发参数无效报错。
修复代码:
import re # 把所有非法文件名字符替换为下划线 page_title = re.sub(r'[\\/:*?"<>|]', '_', page_title)
- 路径拼接写法不规范(可选优化)
直接用字符串拼接路径分隔符的写法兼容性差,更推荐用Python内置的路径处理模块自动适配不同操作系统的分隔符,同时可以自动校验目录是否存在:
from pathlib import Path # 定义输出目录,自动创建不存在的目录 output_dir = Path("output") output_dir.mkdir(exist_ok=True) # 拼接路径,自动适配系统分隔符 raw_data_path = output_dir / f"{page_title}_raw.txt" with open(raw_data_path, 'w', encoding='utf-8') as file: # 注意:write方法必须传入要写入的内容,空调用会触发报错 file.write("你要写入的文本内容")
内容的提问来源于stack exchange,提问作者Javier Vandersluis
相关产品推荐
相关产品推荐

