2012-06-12 58 views
0

我試圖進行以下層次的Python包:(Python)的創建包的__init__.py

\standard 
    \__init__.py 
    \text.txt 
    \scan.py 

有是通過打開的text.txt scan.py稱爲解析()內的功能:

name_list = open('text.txt','r')

然而,當我運行

from standard import * 
result = scan.parse() 

我得到ŧ他以下幾點:

IOError: [Errno 2] No such file or directory: '/text.txt' 

回答

2

Python有搞笑的變量__file__這是一個包含運行代碼的文件的名稱。您的代碼正在查看當前的工作目錄。

使用這個打開文件:

open(os.path.join(os.path.dirname(__file__), 'text.txt'), 'r') 

相關的特殊變量__file__文檔:

http://docs.python.org/reference/datamodel.html

+0

爲什麼我需要的,如果文本文件是在指定的全路徑名與scan.py相同的目錄? – supernoobie

+0

默認情況下,python解釋器在當前工作目錄中查找 - 從哪裏運行整個程序。 scan.py是該程序中的一個模塊。這在其他語言中很難做到,因爲它們缺少這個特殊的__file__變量。從技術上講,您可以計算相對路徑(基於當前路徑和代碼的文件路徑)並使用它來打開文件,但這會更困難。 – Julian