2017-02-27 65 views
0

模塊我有一個名爲「測試」主文件夾,內部結構爲:python3,目錄是不正確的,當進口的子文件夾

# folders and files in the main folder 'test' 
Desktop\test\use_try.py 
Desktop\test\cond\__init__.py # empty file. 
Desktop\test\cond\tryme.py 
Desktop\test\db\ 

現在在文件tryme.py。我想產生「DB」

# content in the file of tryme.py 
import os 

def main(): 
    cwd = os.getcwd() # the directory of the folder 'Desktop\test\cond' 
    folder_test = cwd[:-4] # -4 since 'cond' has 4 letters 
    folder_db = folder_test + 'db/' # the directory of folder 'db' 

    with open(folder_db + 'db01.txt', 'w') as wfile: 
     wfile.writelines(['This is a test.']) 

if __name__ == '__main__': 
    main() 

如果我直接運行這個文件,沒有問題,文件「db01.txt」是的「DB」的文件夾中的文件夾中的文件。 但是,如果我運行use_try.py文件,它將無法正常工作。

# content in the file of use_try.py 
from cond import tryme 

tryme.main() 

我得到的錯誤指的是tryme.py文件。在命令「開放......」

FileNotFoundError: [Error 2] No such file or directory: 'Desktop\db\db01.txt' 

好像代碼

'os.getcwd()' 

僅指調用tryme.py文件中的文件,而不是tryme.py文件本身。

你知道如何解決它,這樣我就可以使用文件use_try.py在'db'文件夾中生成'db01.txt'了嗎?我使用Python3

感謝

回答

2

好像你需要的是working directory,但tryme.py文件的目錄。從一個環境變量

curdir = os.path.dirname(__file__) 
+1

徹底解決了我的問題。謝謝! – aura

0

使用絕對的文件名,或者預計DB /目錄設置爲當前工作目錄的子目錄:

這可以使用魔法__file__來解決。

此行爲與預期的相同。當前工作目錄是您調用代碼的位置,而不是代碼的存儲位置。

folder_test = cwd # assume working directory will have the db/ subdir 

或 folder_test = os.getEnv( 'TEST_DIR')#使用$ {} TEST_DIR/DB/

相關問題