sys.ar**儲存的是指令碼的指令引數列表,sys.ar**[0]是「執行」指令碼的名字。print(sys.ar**[0])返回相對路徑還是絕對路徑,主要看你指令碼的執行方式,如下:
#當前路徑
(base) schillerdemacbook-pro:numpy_test schillerxu$ pwd
/users/schillerxu/documents/sourcecode/python/numpy_test
#**(base) schillerdemacbook-pro:numpy_test schillerxu$ cat 3.py
import sys
import os
print(sys.ar**)
print(sys.ar**[0]
)#兩種不同的執行方法對比
(base) schillerdemacbook-pro:numpy_test schillerxu$ python 3.py
['3.py'
]3.py
(base) schillerdemacbook-pro:numpy_test schillerxu$ python /users/schillerxu/documents/sourcecode/python/numpy_test/3.py
['/users/schillerxu/documents/sourcecode/python/numpy_test/3.py'
]/users/schillerxu/documents/sourcecode/python/numpy_test/3.py
如果獲取的是相對路徑,可以用os.path.abspath(sys.ar**[0])得到絕對路徑,用os.path.split()可以得到目錄名和檔名,**如下:
import sys
import os
path=sys.ar**[0]
abs_path=os.path.abspath(sys.ar**[0]
)dirname,filename=os.path.split(abs_path)
print
(path)
print
(abs_path)
print
(dirname,filename)
程式執行的結果如下:
(base) schillerdemacbook-pro:numpy_test schillerxu$ pwd
/users/schillerxu/documents/sourcecode/python/numpy_test
(base) schillerdemacbook-pro:numpy_test schillerxu$ python 3.py
3.py
/users/schillerxu/documents/sourcecode/python/numpy_test/3.py
/users/schillerxu/documents/sourcecode/python/numpy_test 3.py
最後獲得目錄名和檔名。
__ file__是當前指令碼的名字,如果在當前指令碼使用, __ file__和sys.ar**[0]效果是一樣的,比如**如下:
import sys
import os
print
(__file__)
執行結果:
(base) schillerdemacbook-pro:numpy_test schillerxu$ python 3.py
3.py
(base) schillerdemacbook-pro:numpy_test schillerxu$ python /users/schillerxu/documents/sourcecode/python/numpy_test/
3.py
/users/schillerxu/documents/sourcecode/python/numpy_test/
3.py
同樣受到指令碼執行引數的影響。
但是如果指令碼互相引用,__ file__和sys.ar**[0]結果略有不同,比如**:
a.py
import sys
deff()
:print
(sys.ar**[0]
)print
(__file__)
3.py
import sys
import os
import a
print
(sys.ar**[0]
)print
(__file__)
a.f(
)
執行結果:
可以看到__file__返回的是被呼叫(當前)的檔案,sys.ar**[0]更多的是指令碼執行的引數。
sys.path儲存了python直譯器的部分路徑,可以自己試下,其中sys.path[0]是執行指令碼所在的目錄。
**:
import sys
import os
print
(sys.path[0]
)
結果:
$ python 3.py
/users/schillerxu/documents/sourcecode/python/numpy_test
os.getcwd()返回的是工作目錄,並不一定是指令碼所在目錄。
**:
import sys
import os
print(os.getcwd(
))
執行結果:
python獲取程式執行檔案路徑方法
python獲取當前路徑
import os,sys 使用sys.path 0 sys.argv 0 os.getcwd os.path.abspath file os.path.realpath file sys.path是python會去尋找模組的搜尋路徑列表,sys.path 0 和sys.argv 0 是一回事因為p...
Python獲取當前路徑
refs 假設py檔案路徑為 f seg myresearch myproject 2 test.py import sys print sys.argv 0 獲得的是當前執行指令碼的位置 若在命令列執行的該命令,則為空 12執行結果 在python指令碼中執行的結果 f seg myresearc...
C 獲取檔案當前路徑
1.system.diagnostics.process.getcurrentprocess mainmodule.filename 獲取模組的完整路徑。2.system.environment.currentdirectory 獲取和設定當前目錄 該程序從中啟動的目錄 的完全限定目錄。3.syst...