中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用Python怎么調用不同目錄間的模塊

發布時間:2021-02-19 16:54:29 來源:億速云 閱讀:308 作者:Leah 欄目:開發技術

利用Python怎么調用不同目錄間的模塊?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

1、__file__

功能:返回自身文件的相對路徑

#atm.py中的代碼
print(__file__)
 
#pycharm的執行結果
D:\Python\Python35\python.exe D:/PycharmProjects/51homework/Atm/bin/atm.py
D:/PycharmProjects/51homework/Atm/bin/atm.py #打印出絕對路徑
#從cmd執行atm.py 
D:\PycharmProjects\51homework>python Atm/bin/atm.py 
Atm/bin/atm.py  #打印的是相對路徑

從上面看,為什么pycharm中執行的結果是絕對路徑,而從cmd調用python命令時顯示的卻是相對路徑?你從pycharm的執行結果可以看出,在pycharm執行atm.py文件時,是從絕對路徑下去執行的,而你從cmd下去執行的時候,是你選擇可以在哪個路徑下執行,而__file__表示的是相對路徑,所以在哪個路徑下,就打印哪個路徑。

2、os.path.abspath()

功能:返回自身文件的絕對路徑

#atm.py的文件代碼
import os
print(os.path.abspath(__file__))
#在cmd中的執行結果
D:\PycharmProjects\51homework>python Atm/bin/atm.py
D:\PycharmProjects\51homework\Atm\bin\atm.py #獲取atm.py的絕對路徑

3、os.path.dirname()

功能:返回目錄名,不需要文件名

print(os.path.dirname( os.path.abspath(__file__) ))
D:\PycharmProjects\51homework\Atm\bin #只返回目錄名,不需要文件名

4、sys.path

功能:python環境的執行的環境變量

import sys
print(sys.path)
#cmd執行的結果
['D:\\PycharmProjects\\51homework\\Atm\\bin', 'D:\\Python\\Python35\\python35.zip',
 'D:\\Python\\Python35\\DLLs', 'D:\\Python\\Python35\\lib', 'D:\\Python\\Python35', 
'D:\\Python\\Python35\\lib\\site-packages']

注:執行路徑是列表的形式打印出來的,所以sys.path數據類型是一個列表。

三、絕對路徑和相對路徑

1、絕對路徑

絕對路徑:從根目錄為起點到你所在的目錄。

>>> import os
>>> os.chdir("D:\\PycharmProjects\\51homework\\Atm\\bin\\")
>>> os.listdir()
['atm.py', '__init__.py']
>>> os.path.abspath('atm.py')
'D:\\PycharmProjects\\51homework\\Atm\\bin\\atm.py'  #是從D盤的這個根目錄下來的

2、相對路徑

相對路徑:從一個目錄為起點到你所在的目錄。

>>> import os

>>> os.chdir("D:\\PycharmProjects\\51homework\\Atm\\bin\\")

>>> os.listdir()

['atm.py', '__init__.py']

>>> os.path.dirname('atm.py')

''  #顯示相對路徑

四、不同目錄間進行模塊調用

1、添加環境變量

一般情況下,絕對路徑函數和相對路徑函數是結合起來用的,特別是在不同目錄之間相互調用彼此的模塊。

利用Python怎么調用不同目錄間的模塊

比如按以上層級:atm.py如果想調用其他模塊中的代碼,必須要跟atm.py是同級的,不信請看如下代碼:

#atm.py中的代碼

import sys

print(sys.path)

#cmd執行的結果

D:\PycharmProjects\51homework>python Atm/bin/atm.py

['D:\\PycharmProjects\\51homework\\Atm\\bin', 'D:\\Python\\Python35\\python35.zip',

 'D:\\Python\\Python35\\DLLs', 'D:\\Python\\Python35\\lib', 'D:\\Python\\Python35', 

'D:\\Python\\Python35\\lib\\site-packages']

只到'D:\\PycharmProjects\\51homework\\Atm\\bin'這一層,其他的層級無法調用。那怎么辦吶?

步驟如下:

1.獲取Atm的絕對路徑
2.添加到環境變量中

代碼如下:

#atm.py中的代碼
import os,sys
BASE_DIR = os.path.dirname( os.path.dirname( os.path.abspath(__file__) ) ) #Atm的絕對路徑
print(BASE_DIR)
sys.path.append(BASE_DIR) #添加到環境變量中
#cmd執行結果
D:\PycharmProjects\51homework>python Atm/bin/atm.py  #執行atm.py文件
D:\PycharmProjects\51homework\Atm  #打印Atm的絕對路徑
['D:\\PycharmProjects\\51homework\\Atm\\bin', 'D:\\Python\\Python35\\python35.zip', 
'D:\\Python\\Python35\\DLLs', 'D:\\Python\\Python35\\lib', 'D:\\Python\\Python35',
 'D:\\Python\\Python35\\lib\\site-packages',
 'D:\\PycharmProjects\\51homework\\Atm']  #Atm的絕對路徑已經添加到環境變量中

2、調用其他模塊

接下來就可以順利的進行不同目錄下,模塊之間的調用了

#atm.py中的代碼
import os,sys
BASE_DIR = os.path.dirname( os.path.dirname( os.path.abspath(__file__) ) )
sys.path.append(BASE_DIR)
from core import main  #調用core中的main模塊
main.sayhi()  #調用main模塊中sayhi函數
 
#main.py中代碼
def sayhi():
  print("hello word")
 
#cmd執行的結果
D:\PycharmProjects\51homework>python Atm/bin/atm.py
hello word

看完上述內容,你們掌握利用Python怎么調用不同目錄間的模塊的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天台县| 民丰县| 冷水江市| 平塘县| 新丰县| 大宁县| 丹寨县| 九江市| 宿州市| 云梦县| 怀安县| 横峰县| 砚山县| 新绛县| 驻马店市| 台江县| 尼木县| 阿巴嘎旗| 神农架林区| 平远县| 皋兰县| 上栗县| 穆棱市| 分宜县| 大名县| 屯门区| 璧山县| 胶南市| 和静县| 冷水江市| 南昌县| 阿巴嘎旗| 会宁县| 黎平县| 肥东县| 华坪县| 沙河市| 平潭县| 佛坪县| 沈阳市| 兴国县|