如何正確確定當前腳本目錄?我想看看在python中確定當前腳本目錄的最佳方法是什么?我發現,由于調用python代碼的方法很多,很難找到一個好的解決方案。以下是一些問題:__file__如果腳本是用exec, execfile__module__僅在模塊中定義。用例:./myfile.pypython myfile.py./somedir/myfile.pypython somedir/myfile.pyexecfile('myfile.py')(來自另一個腳本,該腳本可以位于另一個目錄中,并且可以具有另一個當前目錄)。我知道沒有完美的解決方案,但我正在尋找解決大多數情況的最佳方法。最常用的方法是os.path.dirname(os.path.abspath(__file__))但是,如果您從另一個exec().警告任何使用當前目錄的解決方案都將失敗,這可能根據腳本的調用方式而有所不同,或者在運行的腳本中進行更改。
3 回答
慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
os.path.dirname(os.path.abspath(__file__))
exec/execfile__file__globals
翻閱古今
TA貢獻1780條經驗 獲得超5個贊
execfile(...)inspect
filename = inspect.getframeinfo(inspect.currentframe()).filename path = os.path.dirname(os.path.abspath(filename))
慕沐林林
TA貢獻2016條經驗 獲得超9個贊
#!/usr/bin/env pythonimport inspectimport osimport sysdef get_script_dir(follow_symlinks=True): if getattr(sys, 'frozen', False): # py2exe, PyInstaller, cx_Freeze path = os.path.abspath(sys.executable) else: path = inspect.getabsfile(get_script_dir) if follow_symlinks: path = os.path.realpath(path) return os.path.dirname(path)print(get_script_dir())
execfile() (sys.argv[0]__file__PYTHONPATH=/path/to/library.zip python -mscript_to_runsys.frozenrealpath
添加回答
舉報
0/150
提交
取消
