2017-10-16 75 views
0

我希望我的Python腳本能夠被其他文件夾設置的人運行,因此使用對Python腳本保存的文件夾的引用很有意義。例如:如果我的腳本「script_1.py」從「C:\ My Scripts \ script_1.py」運行,我想將「C:\ My Scripts」保存到我可以使用的變量中。我的Python腳本所在的文件夾的路徑是什麼?

但是,我無法得到它太工作。

我已經進口的操作系統和對稱,但使用os.path.dirname(__file__)os.path.abspath(__file__)提供錯誤消息:

Traceback (most recent call last): 

File "<ipython-input-24-1830932ce69b>", line 1, in <module> 
os.path.dirname(__file__) 

NameError: name '__file__' is not defined 

使用sys.executable給我的地址是安裝我的Python在那裏(我想??這不無論如何,給我我想要的東西)。

我也給出的建議嘗試os.environ['_']但給:

Traceback (most recent call last): 

File "<ipython-input-26-6c75f8b10c6d>", line 1, in <module> 
os.environ['_'] 

File "D:\Continuum\Anaconda3\lib\os.py", line 669, in __getitem__ 
    raise KeyError(key) from None 

KeyError: '_' 

我的方式運行我的代碼從Windows 10。它是Python 3.

+3

'__file__'是給你一個錯誤,因爲你在一個交互式會話使用它,有沒有文件,試圖讓這麼想的意義 – jonatan

+0

@jonatan我不知道該文件,但它很有意義。謝謝。 –

回答

1

這會給你腳本的位置。

import os 
import sys 
script_location = os.path.split(os.path.realpath(sys.argv[0]))[0] 
+0

什麼時候比'script_location = __file__'好?如果導入,'__file__'仍然可以工作,但這不會。 – jonatan

+0

好問題......從來沒有真正想過。我想唯一真正的區別是'__file__'會給你正在執行的當前文件的位置,不一定是你的主程序......所以這取決於你想要弄清楚什麼? –

相關問題