這裏發佈的所有答案都能正確識別問題,即您的字符串格式不正確。
您還應該檢查您最終得到的字符串是否是您嘗試創建文件的操作系統的有效文件名。
您的例子並不產生在Windows上一個有效的文件名,雖然將工作在Linux上,創建的文件名會不會是你所期望的:
>>> f = open(str(datetime.datetime.now()),'w')
>>> f.write('hello\n')
>>> f.close()
>>> quit()
-rw-r--r-- 1 burhan burhan 6 Sep 11 06:53 2012-09-11 06:53:04.685335
在Windows上不工作所有:
>>> open(str(datetime.datetime.now()),'w')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 22] invalid mode ('w') or filename: '2012-09-11 06:51:26.873000'
這將是一個更好的選擇(2.6+):
filename = "Path/to/file/{0.year}{0.month}{0.day}".format(datetime.now())
對於舊版本Python中的sions,您可以使用經典的選項:
filename = "Path/to/file/%s" % datetime.strftime(datetime.now(),"%Y%m%d")
你這樣的工作,但你會移到旁邊路徑的元組,像'例如=(「路徑/到/文件%s」%STR( datetime.now()),「w」)' – sberry