2013-07-02 70 views
0

我嘗試使用open函數時出現此錯誤。如果我理解正確,如果文件不存在(它不),它會自動創建。我嘗試將'w'改爲'w +',但我得到了同樣的錯誤。使python錯誤打開文件

Traceback (most recent call last): 
    File "altdl.py", line 24, in <module> 
    sys.stdout = open(str(start_dir + "\\Logs\\" + "log_" + str(now.date()) + "_ 
" + str(now.time()) + ".log"), 'w') 
IOError: [Errno 22] invalid mode ('w') or filename: 'C:\\Users\\Vaibhav\\Desktop 
\\Test\\Logs\\log_2013-07-02_11:21:37.717000.log' 

順便說一句,start_dir設置爲str(os.getcwd())

+0

你允許':'在Windows中的文件名? –

+5

從這裏:http://stackoverflow.com/questions/10386344/how-to-get-a-file-in-windows-with-a-colon-in-the-filename 不! Windows中不允許冒號。 –

+0

哦,哈哈,傻我,謝謝! –

回答

0

正如在其他的答案說,Windows不會真的喜歡冒號。所以,讓我們嘗試使用其它字符來格式化你的時間/日期:

import datetime 
filename = "log_{}.log".format(datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')) 
# filename should be something like : 'log_2013-07-02_20-47-06.log' 
f = open(filename, 'w') 

的Et瞧!

此外,我建議使用os.joinpath而不是硬編碼所有相關的操作系統路徑分隔(\\),以便您的程序可以在Linux和Windows上運行。

+0

感謝您的好選擇! –

+0

非常歡迎:-) – halflings

0

不幸的是,Windows在路徑名稱中不喜歡冒號。

嘗試類似:

with open("C:\\Users\\Vaibhav\\Desktop\\Test\\Logs\\log_2013-07-02_11.21.37.717000.log", "w") as f: 
    pass