python獲取檔案當前路徑方法彙總

2021-10-10 01:33:45 字數 3038 閱讀 7538

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...