2014-02-22 89 views
1

我正在寫一個簡單的腳本,它將文件附加到郵件中,但它沒有找到該文件。這是我的一個塊:Python沒有在同一目錄中找到文件

# KML attachment 
    filename='20140210204804.kml' 
    fp = open(filename, "rb") 
    att = email.mime.application.MIMEApplication(fp.read(),_subtype="kml") 
    fp.close() 
    att.add_header('Content-Disposition','attachment',filename=filename) 
    msg.attach(att) 

文件20140210204804.kml與腳本位於同一文件夾中。我得到以下錯誤:

IOError: [Errno 2] No such file or directory: '20140210204804.kml' 

任何幫助表示讚賞。

+2

你是如何運行腳本?當前目錄不一定與腳本的位置相同。 –

回答

3

工作目錄未設置爲腳本的目錄,而是設置爲啓動腳本的當前目錄。

使用__file__來確定該文件的位置,並把它作爲一個起點,使filename絕對路徑:

import os 

here = os.path.dirname(os.path.abspath(__file__)) 

filename = os.path.join(here, '20140210204804.kml') 
+0

非常棒!我沒有這樣想。我可以理解「** __ file __ **」做了什麼,但是有沒有可以解釋爲什麼/如何做的鏈接? –

+0

@Abhishekdotpy:這裏的大部分'技巧'都是使用['os.path'模塊](http://docs.python.org/2/library/os.path.html);在那裏尋找'abspath'和'dirname'。 '__file__'只是當前模塊的文件名,它可以*相對於工作目錄。 –

+1

@Abhishekdotpy:'__file__'記錄在['import'語句文檔](http://docs.python.org/2/reference/simple_stmts.html?highlight=__file__#the-import-statement)和[Python datamodel文檔](http://docs.python.org/2/reference/datamodel.html)。 –

相關問題