Python创建指定格式日期时间命名文件报FileNotFoundError
报错原因
根本原因是你生成的dt_string里包含了操作系统的路径分隔符/,不属于合法的单文件名:
- 你传入的文件名字符串是
25/06/2022 13:02:32,操作系统会自动把/识别为分层路径的标记,将其解析为多级路径:当前目录下找名为25的文件夹 → 进入25文件夹找名为06的子文件夹 → 在06文件夹里创建名为2022 13:02:32的文件。 w+模式确实会自动创建不存在的文件,但这个规则仅对路径最后一级的目标文件生效,不会自动创建路径中间缺失的父文件夹。你本地本来就没有25/06这两层目录,自然会抛出找不到路径的错误。
你用str(now)能正常创建文件,是因为datetime默认转字符串的输出类似2022-06-25 13:02:32.123456,里面没有/这类路径分隔符,会被直接识别为当前目录下的单个文件,符合创建规则。
额外注意:Windows系统下文件名还禁止使用半角冒号:(该符号用于标记盘符,比如C:),你原来格式里时间部分的:在Windows环境下同样会触发文件名非法错误。
修复方法
把格式串里的/和:替换成文件名允许的合法字符即可,比如横杠-、下划线_,修正后的代码:
from datetime import datetime now = datetime.now() # 替换非法路径/保留字符,生成合法文件名 dt_string = now.strftime("%d-%m-%Y %H-%M-%S") open(dt_string, 'w+')
如果你业务上必须保留dd/mm/YY H:M:S的显示样式,不要直接拿这个格式串当文件名,可以把该格式的时间写入文件内容,或者用全角的/、:替代半角符号(不推荐,跨系统兼容性很差)。
内容的提问来源于stack exchange,提问作者Internet Warrior
相关产品推荐
相关产品推荐

