python經常會遇到切換路徑的操作。例如檔案結構如下
在寫程式時遇到test.test_data.py裡呼叫utils.data_process.data.py的open_file()讀取data.txt的目錄,跟直接在utils.data_process.data.py執行呼叫open_file()讀取data.txt的目錄,執行結果是不同的。個人猜想:test呼叫時是以test所在目錄作為當前目錄的,直接執行時是取的data_process目錄作為當前目錄的。所以為了避免這種情況發生,選對讀取路徑的函式非常關鍵,通過實驗發現,在data.py檔案用os.path.dirname(__file__)讀取的檔案所在路徑,無論怎麼呼叫都是%專案所在物理路徑%testpath/utils/data_process,這樣再想辦法根據需求取父節點,和祖先節點就可以了。
data.txt
data.py[store]
shopid = '20180828'
shopname = 'sunny'
address = 'shanghai'
test_data.py#!coding:utf-8
import configparser
import os
def open_file():
cp = configparser.configparser()
# 獲取data.py的目錄
# data_directory = os.path.dirname(__file__)
data_directory = os.path.abspath(os.path.dirname(__file__))
print('data.txt所在目錄=%s'%data_directory)
# 專案路徑為data.py的上上級目錄
project = os.path.abspath(os.path.join(data_directory, '../..'))
print('工程路徑=%s'%project)
file_name = project + '\\data\\data.txt'
cp.read(file_name)
shop_id = cp.get('store','shopid')
shop_name = cp.get('store','shopname')
print(shop_id, shop_name)
if __name__== '__main__':
open_file()
from utils.data_process.data import open_file
open_file()
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...
Python程式設計獲取當前路徑
在編寫各類應用程式時,獲取當前路徑一直是乙個經典問題,只有獲取了當前路徑才可以進一步找到所有同路徑下的其它檔案。python程式語言也可以通過一些系統呼叫來獲得當前路徑。本文給出的模組不僅僅可以獲取當前路徑,也可以形成sqlobject使用的uri形式字串,以當前路徑下的指定檔名合成資料庫路徑。im...