Python中无法命名含特殊字符的文件?OSError报错解决咨询
解决Python创建含特殊字符文件名的报错问题
你碰到的OSError: [Errno 22]错误,核心原因是Windows系统禁止文件名包含|(半角竖线)这类特殊字符——除了|,< > : " / \ | ? *这些字符在Windows里都属于文件名非法字符;而Linux/macOS对文件名限制宽松,但/在所有系统里都不能用。
给你几个可行的解决办法:
直接替换非法字符
把文件名里的非法字符换成合法的(比如-、_),修改后的代码示例:with open('My filename: one - two.txt', 'a') as f: f.write('something')用全角特殊字符替代半角
如果想保留类似竖线的视觉效果,可以用全角竖线¦代替半角|,全角字符在Windows文件名中是允许的:with open('My filename: one ¦ two.txt', 'a') as f: f.write('something')写个工具函数处理跨平台文件名
如果需要兼容多系统,可以写一个自动过滤/替换非法字符的函数,避免手动修改:def sanitize_filename(filename): # 列出Windows下的所有文件名非法字符 illegal_chars = '<>:"/\\|?*' for char in illegal_chars: filename = filename.replace(char, '-') return filename # 处理后得到安全的文件名 safe_name = sanitize_filename('My filename: one | two.txt') with open(safe_name, 'a') as f: f.write('something')
内容的提问来源于stack exchange,提问作者mxidentic
相关产品推荐
相关产品推荐

