2016-04-07 63 views
0

我正在處理奇怪的問題。考慮這個簡單的代碼:當我在我的筆記本電腦,在那裏我有的Fedora 23操作系統上運行該代碼Python系統屬性「__file__」在不同的linux發行版中不一致

print(__file__) 
print("***" + os.path.dirname(__file__) + "###") 

現在,輸出結果是:

/home/.../ExperimentalSystem/BullshitSetupGenerator.py 
***/home/.../ExperimentalSystem### 

運行在Ubuntu 15.10的相同代碼:

BullshitSetupGenerator_delete_me.py 
***### 

有人能解釋我爲什麼嗎?我錯過了什麼嗎?

+0

dirname函數中沒有不一致。不一致在'__file__' – wim

+0

與'dirname'或'__file__'不一致嗎?我的猜測是後者。你是否在兩個地方使用相同的相對路徑運行代碼?最後,爲了獲得一致的行爲,我想你可以使用'os.path.dirname(os.path.abspath(__ file __))' – mgilson

+0

它與__file__,true。 –

回答

2

你可能不希望單純依靠__file__屬性,但可以確保你有一個完整的路徑abspath

os.path.dirname(os.path.abspath(__file__)) 
3

__file__由告訴它你的文件給Python的參數定義是。例如,假設您位於名爲Here的文件夾中。你可以說python ../Here/here.py__file__將是../Here/here.py。如果您只用python here.py運行相同的文件,則__file__here.py。在不使用絕對路徑或奇怪的相對路徑的情況下在同一目錄中運行Python文件時,該文件不會有任何提及的目錄。這意味着os.dirname(__file__)將爲空白。如果你願意,你可以通過os.path.abspath()獲得絕對路徑。

相關問題