格式化文件名的日期、时间和字符串



我想创建一个文件名为以下格式的csv文件:

"日-月-年"

"小时:minute-malware_scan.csv"

示例:" 6-8-2016 21:45-malware_scan.csv"

文件名的第一部分由文件创建时的实际日期和时间组成,而"-malware_scan.csv"是一个固定字符串。

我知道为了获得日期和时间,我应该使用time或datetime模块和strftime()函数进行格式化。

一开始我试着写:

t = datetime.datetime.now()
formatted_time = t.strftime(%d-%m-%y %H:%M)
filename = formatted_time + "-malware_scan.csv"
with open(filename, "a") as f:
    ...............

我没有得到预期的结果,所以我试了另一种方法:

i = datetime.datetime.now()
file_to_open = "{day}-{month}-{year} {hour}:{minute}-malware_scan.csv".format(day = i.day, month = i.month, year = i.year, hour = i.hour, minute = i.minute)
with open(file_to_open, "a") as f:
    .......................

同样使用上面的代码,我没有得到预期的结果。我得到这样一个文件名:"6-8-2016 21"。显示日、月、年和小时,但不显示分钟和字符串(-malware_scan.csv)的其余部分。

我只关注这个问题的文件名,而不是csv本身,其代码被省略。

PC上的文件名不允许使用:字符。您可以完全放弃:分隔符:

>>> from datetime import datetime
>>> t = datetime.now()
>>> formatted_time = t.strftime('%d-%m-%y %H%M')
>>> formatted_time
'06-08-16 2226'
>>> datetime.strptime(formatted_time, '%d-%m-%y %H%M')
datetime.datetime(2016, 8, 6, 22, 26)

感谢Moses Koledoye发现问题。我以为我在Python代码中犯了一个错误,但实际上问题是文件名的字符。

根据MSDN,以下是不能在Windows上的文件名中使用的保留字符:

< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
 (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)

相关内容

  • 没有找到相关文章

最新更新