我想创建一个文件名为以下格式的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)