Python Pandas处理CSV时为文件名追加时间报错求助
解决Pandas保存CSV时文件名含非法字符的报错问题
看起来你遇到的问题根源其实和变量final的内容有关,但不是变量本身的定义,而是文件名里包含了操作系统不允许的特殊字符。让我帮你拆解一下:
问题分析
你生成的currenttime用了格式%Y-%m-%d %H:%M:%S,这里面的空格和冒号是Windows/macOS/Linux等系统都不允许出现在文件名中的字符。当你把它拼接到final里,再传给df1.to_csv()时,系统会因为文件名非法而抛出错误——这就是为什么换其他不含特殊字符的变量能正常运行的原因。
而且你提到环境没有datetime/time库,用Pandas的pd.to_datetime('today')完全没问题,只需要调整时间字符串的格式即可。
修改后的代码
把时间格式里的空格和冒号替换成合法的字符(比如下划线_和连字符-),这样生成的文件名就符合系统要求了:
import os import pandas as pd csv1 = '(Compacted)_TrialCSV_08072020_113107.csv' shortcsv = csv1[11:-19] # 把时间格式里的空格换成下划线,冒号换成连字符,避免非法文件名 currenttime = pd.to_datetime('today').strftime('%Y-%m-%d_%H-%M-%S') final = shortcsv + currenttime df1 = pd.read_csv(csv1) # 格式化DATETIME列 df1['DATETIME'] = pd.to_datetime(df1['DATETIME'], dayfirst=True).dt.strftime('%Y-%m-%d %H:%M:%S') # 保存文件,文件名现在是合法的,建议加上.csv后缀确保格式识别 df1.to_csv('(Formatted)' + final + '.csv', index=False) print("Datetime Conversion complete")
额外注意事项
- 我在保存时额外加了
.csv后缀,这样生成的文件会被系统正确识别为CSV格式,避免出现无后缀的模糊文件。 - 如果你需要其他时间格式,只要确保不含
/ \ : * ? " < > |这些系统禁止的字符即可。
内容的提问来源于stack exchange,提问作者Gurdish
相关产品推荐
相关产品推荐

