1. 程式人生 > >使用os獲取當前檔案絕對路徑! 備忘

使用os獲取當前檔案絕對路徑! 備忘

寫爬蟲,存檔案時遇到了路徑和命名問題,查閱資料,寫在這裡以備忘!

import os,sys

'''
os.getcwd()
Return a string representing the current working directory.
Availability: Unix, Windows.
os.getcwd返回的是當前的工作路徑,就是你在什麼地方執行的python命令,
如果你想獲取指令碼所在的目錄可以使用:
import os
print os.path.dirname(os.path.realpath(__file__))



在python中獲取當前路徑使用os.getcwd()並不總是有效的,鄙人有個python打包的exe程式,
執行的時候有時取得的路徑是當前指令碼路徑,有時卻不是,疑惑了很久。

查閱了一些資料才發現,os.getcwd()是用來獲取呼叫python程式時所在目錄,也就是呼叫目錄,並非執行指令碼所在目錄,舉個例子:

有這樣一個指令碼,e:\root\subdir\test.py,且test.py檔案中有print os.getcwd()語句,

進入cmd視窗,cd e:\root\subdir\,敲擊python test.py 檔案,列印結果是e:\root\subdir

如果是這樣 cd e:\root\,敲擊python test.py 檔案,列印結果卻是e:\root

簡而言之也就是你在哪個視窗執行的命令,當前視窗就是哪兒。微笑


由此可見,如果想獲取python程式所在位置,使用這個函式是不對的,不過可以用下面這個辦法來做,

使用os.path.abspath(),在主函式中呼叫該函式,並傳入sys.argv[0] 就可以達到這個效果。
'''


print(os.getcwd())
print(os.path.abspath(sys.argv[0]))
print(os.path.dirname(os.path.realpath(__file__)))

查閱了幾篇文章,基本解決了我遇到的問題.

os.getcwd() 返回的是python在哪個地方執行的,並不是你當錢py檔案所在的路徑.

其實都是一些os,sys模組的方法.

輸出結果,就不寫出了,自己動手,印象會更深刻.