使用pandas保存csv时文件名追加日期时间出现OSError Errno 22如何解决
报错原因
该错误是因为Windows、macOS等主流操作系统的文件名规则禁止包含:特殊字符,你通过strftime生成的时间字符串中自带:分隔符,拼接为文件名后不符合系统规则,因此触发非法参数报错。
可行解决方法
- 替换时间格式中的冒号为合法分隔符,比如横杠、下划线、点号均可,是兼容性最高的解决方案。示例修改后的代码如下:
currentDateTime = datetime.now().strftime("%m-%d-%Y %H-%M-%S %p") df.to_csv(f"filename {currentDateTime}.csv", index = False)
修改后生成的文件名格式为filename 09-30-2021 16-45-17 PM.csv,完全符合所有系统的文件名规则。
- 若不需要精确到秒,可直接简化时间格式省略秒的部分,同步去掉冒号即可:
currentDateTime = datetime.now().strftime("%m-%d-%Y %H-%M %p") df.to_csv(f"filename {currentDateTime}.csv", index = False)
补充注意:除冒号外,
/ \ < > * ? " |也属于文件名禁止使用的特殊字符,动态生成文件名时需要注意规避。
内容的提问来源于stack exchange,提问作者DDM
相关产品推荐
相关产品推荐

