Python開發中相對路徑指定輸出位置。
阿新 • • 發佈:2020-10-22
在Python開發中,有時候需要輸出一些日誌,或者爬蟲的時候需要將一些檔案儲存在指定的位置。
當然你輸入絕對路徑是肯定沒有問題的,但更多的時候,輸入的應該是相對路徑,這樣在專案啟動的時候,可以根據你專案的儲存儲存到指定的目錄.
最近在工作中學到了兩種寫法,感覺都還行,供大家學習參考:
import os, sys # 通過sys.argv[0]獲取帶相對位置的檔名引數 print(sys.argv[0]) print(os.path.abspath(sys.argv[0])) mod_path = os.path.dirname(os.path.abspath(sys.argv[0])) full_path = os.path.join(mod_path, './hello', 'file_name') print(full_path)
(base) shijianzhongdeMacBook-Pro:/ shijianzhong$ python3 Users/shijianzhong/t.py Users/shijianzhong/t.py /Users/shijianzhong/t.py /Users/shijianzhong/./hello/file_name (base) shijianzhongdeMacBook-Pro:/ shijianzhong$ cd Users/ (base) shijianzhongdeMacBook-Pro:Users shijianzhong$ python3 shijianzhong/t.py shijianzhong/t.py /Users/shijianzhong/t.py /Users/shijianzhong/./hello/file_name
通過在不同的路徑下執行命令,從輸出看,雖然sys.argv[0]的輸出,因為執行的命令不一樣,一直在改動。
但最後的os.path.abspath輸出的路徑還是不變的,通過這個特性,就可以根據啟動檔案的位置為座標點,相對路徑參考此座標點進行檔案的存放。
第二種是通過__file__的屬性來實現:
通過實踐
import os, sys print(__file__) print(sys.argv[0]) print(os.path.abspath(sys.argv[0])) mod_path = os.path.dirname(os.path.abspath(sys.argv[0])) full_path = os.path.join(mod_path, './hello', 'file_name') print(full_path)
__file__的輸出效果與sys.argv[0]是相同的,由於sys還需要倒包操作,實際操作還是__file__更加方便.