Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 格式化文件名的日期、时间和字符串_Python_String_Datetime_Formatting_Filenames - Fatal编程技术网

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

Python 格式化文件名的日期、时间和字符串,python,string,datetime,formatting,filenames,Python,String,Datetime,Formatting,Filenames,我想创建一个文件名为以下格式的csv文件: “日-月-年-小时:分钟-恶意软件_-scan.csv” 示例:“6-8-2016 21:45-malware_scan.csv” 文件名的第一部分由文件创建时的实际日期和时间组成,而“-malware_scan.csv”是一个固定字符串 我知道为了获得日期和时间,我应该使用time或datetime模块和strftime()函数进行格式化 起初,我试着: t = datetime.datetime.now() formatted_time = t.s

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

“日-月-年-小时:分钟-恶意软件_-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代码中犯了一个错误,但实际上问题是文件名的字符

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

< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)
<(小于)
>(大于)
:(冒号)
“(双引号)
/(正斜杠)
\(反斜杠)
|(垂直杆或管道)
?(问号)
*(星号)

第一次尝试的结果是什么?因为我尝试时格式很好。
%d-%m-%y%H:%m
应该是一个字符串(带“)。顺便说一句,意味着文件名中不允许使用
,至少在Windows上是这样。我正在Windows上尝试。所以也许我应该避免使用:作为分隔符。我建议使用下划线(u)而不是
和任何空格。这样,即使不是所有操作系统,它也能在大多数操作系统上工作。谢谢。仅仅切除结肠就足以解决这个问题。我知道有些角色是不允许的,但我现在真的没想过。