Python生成含日期时间文件名出现异常符号,求解决方法
解决文件名中时间分隔符变为异常符号的问题
问题根源
Windows文件系统禁止文件名包含: < > / \ | ? *这类字符,你用str(datetime.now())生成的字符串里带半角冒号(:),虽然打印时显示正常,但实际写入文件系统时,系统会自动把冒号替换成异常符号,这就是问题的核心原因。
修复方案
1. 生成文件名时主动规避禁用字符
别直接用str(datetime.now()),改用strftime()手动格式化时间,把冒号替换成系统允许的字符(比如横杠-或点.):
from datetime import datetime # 自定义时间格式,用横杠替换冒号 timestamp = datetime.now().strftime("%Y-%m-%d %H-%M-%S.%f") filename = f"{timestamp}_logs.txt"
这样生成的文件名不含冒号,自然不会出现异常符号替换的问题。
2. 批量修复已生成的异常文件名
如果已经有一批带异常符号的文件,可以用脚本批量替换:
import os import shutil # 替换成你的文件所在目录 target_directory = "./your_logs_dir" for filename in os.listdir(target_directory): if "" in filename: # 将异常符号替换为横杠,也可换成其他合法字符 new_filename = filename.replace("", "-") old_path = os.path.join(target_directory, filename) new_path = os.path.join(target_directory, new_filename) shutil.move(old_path, new_path)
额外提示
如果想要类似冒号的视觉效果,也可以用**全角冒号(:)**替代半角冒号,但全角字符在部分场景下可能存在兼容性问题,更推荐用半角横杠或点作为时间分隔符。
内容的提问来源于stack exchange,提问作者Sairet
相关产品推荐
相关产品推荐

