文章目錄
- 一、前言
- 二、模塊與包的知識合集
- 2.1 模塊與包的定義
- 2.1.1 模塊定義
- 2.1.2 包的定義
- 2.2 模塊與包的作用
- 2.2.1 模塊的作用
- 2.2.2 包的作用
- 2.3 包與模塊的匯入呼叫
- 2.3.1 模塊呼叫
- 2.3.2 包的匯入
- 2.3.3 模塊與包匯入方式
- 2.3.4 安裝三方模塊
- 2.3.5 國內鏡像源
- 三、路徑知識合集
- 3.1 路徑處理
一、前言
??本文章主要講解Python中模塊、包以及路徑的相關知識點內容,是自動化測驗框架設計的基礎鋪墊,下方有系列文章的傳送門,感興趣的小伙伴也可以前往查看,話不多說,讓我們一起看看吧~
系列文章:
??系列文章1:【Python自動化測驗1】遇見Python之美
??系列文章2:【Python自動化測驗2】Python安裝配置及PyCharm基本使用
??系列文章3:【Python自動化測驗3】初識資料型別與基礎語法
??系列文章4:【Python自動化測驗4】字串知識總結
??系列文章5:【Python自動化測驗5】串列與元組知識總結
??系列文章6:【Python自動化測驗6】字典與集合知識總結
??系列文章7:【Python自動化測驗7】資料運算子知識合集
??系列文章8:【Python自動化測驗8】流程控制陳述句講解
??系列文章9:【Python自動化測驗9】函式知識合集
??系列文章10:【Python自動化測驗10】檔案基礎操作
二、模塊與包的知識合集
2.1 模塊與包的定義
2.1.1 模塊定義
??模塊(Module):Python模塊就是一個Python檔案,以.py結尾的檔案,我們稱之為模塊,包含了Python物件定義和Python陳述句,

2.1.2 包的定義
??包(Package):Python中的包與我們平常所創建的檔案夾不同,Python包創建完成后包含一個__init__.py檔案的目錄(檔案夾),
??包的命名同變數、模塊一樣,都需要遵守識別符號規則,這點需要注意,


2.2 模塊與包的作用
2.2.1 模塊的作用
??模塊的作用主要有以下幾點:
1、模塊能夠讓你更有邏輯的組織你的代碼
2、把相關功能的代碼寫到一個模塊里,能讓你的代碼使用更便捷、高效,并有一定的易讀性
3、模塊能定義函式、類、變數等等,模塊中包含可執行的代碼
??
2.2.2 包的作用
??對于包而言,這個時候肯定會有疑問,那么__init__的作用是什么,其實是Python包的一個規則,它是根據這個檔案來判斷出這是一個Python包的,如果Python包中沒有__init__這個檔案,那么在后續導包時會出現模塊、路徑找不到的情況,故此我們需要保留__init__,如果我們新建一個檔案夾,在檔案夾里在新建一個__init__,那么Python將會自動識別為Python包:


2.3 包與模塊的匯入呼叫
2.3.1 模塊呼叫
??因為模塊能夠更好的組織代碼,故此也會對代碼進行一個模塊劃分,例如測驗用例放在excel中,excel放在測驗用例的目錄下,日志系統則放在日志的py檔案中,放在日志的Python包下,道理是一樣,相類似的功能都會分開進行管理,我們在A模塊中需要使用B模塊的內容,就需要進行模塊呼叫,下面的示例需要從main模塊呼叫Demo模塊的函式,結構與示例如下:


??如下示例所示,這樣我們就成功的從main模塊呼叫了Demo模塊的number函式并可以在main模塊中使用它:
# 匯入: from 包名.模塊名 import 函式名 / 變數 /...
from Pkg_1.Demo import number
number()

??
2.3.2 包的匯入
??一個包匯入的路徑我們可以通過sys.path來進行確認,導包from后面的路徑是從sys.path當中截取的,
??通常包括了專案目錄、Python安裝目錄以及Python虛擬環境:
import pprint
import sys
pprint.pprint(sys.path)


??在上圖中我們可以看到,沒有Demo.py,那么就意味著,我們不能夠直接from Demo.py,因為系統無法識別找到:

??
2.3.3 模塊與包匯入方式
??模塊與包的匯入方式主要有以下幾個內容:
"""
匯入的幾種方式:
import *
import ...
import as
from ... import *
from ... import ...
from ... import ... as ...
"""
"""
常用的主要有from import匯入以及import的匯入方式:
import * 了解即可,切記不可在真實專案中使用!! import * 代表的含義是匯入sys.path下所有的模塊、函式、變數...
from ... import * 匯入某個包 / 檔案 下面的所有內容,盡量避免使用,同樣也是了解即可
import ... 通常是匯入一個模塊,內置模塊或者第三模塊(需要先行安裝才可使用),以此來使用
from ... import ... as ... as是給一個別名,A模塊與B模塊中有函式、變數名沖突等,那么給個別名,就可以通過別名進行呼叫,防止名稱重復
特別注意:
import匯入不能直接匯入函式,需要使用from的方式匯入,import只能匯入包和模塊
"""
??
2.3.4 安裝三方模塊
??我們知道Python有內置模塊,當我們需要實作一些功能,但Python內置模塊沒有時則需要匯入三方模塊,匯入后即可使用對應功能,簡易資訊如下所示:
"""
第三方模塊的安裝是在命令列進行的,格式為:
pip install 三方模塊名
安裝方式1: pip install requests
安裝方式2:通過PyCharm中的Settings可以直接進行設定安裝(不詳細說明,大家可以自行百度,普遍推薦第一種命令安裝方式)
如果不進行三方模塊的安裝,直接進行匯入,那么是無法匯入的,輸入后會報紅色波浪線(報錯)
"""
??
2.3.5 國內鏡像源
??在安裝時因為國內的下載速度有時候會比較慢,那么我們可以使用鏡像源來提高加快下載速度,任意選擇一種即可,筆者通常會使用清華、阿里云鏡像源,我們可以一次性通過Settings進行永久設定:
"""
鏡像源合集:
清華:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/
華中理工大學:http://pypi.hustunique.com/
山東理工大學:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/
"""



??
三、路徑知識合集
3.1 路徑處理
??在Python中os模塊是專門用來處理路徑的,os模塊中有很多方法能夠讓我們通過代碼實作對目錄的增刪改查,詳見下串列格,前三個加粗格式的方法是常用方法需要掌握,其他方法在自動化測驗領域中使用較少,了解即可:
| 方法 | 描述 |
|---|---|
| os.path.abspath() | 獲取絕對路徑 |
| os.path.dirname() | 回傳檔案/目錄的所在路徑 |
| os.path.join(x,y) | 連接兩個部分的路徑,組成完整路徑 |
| os.getcwd() | 顯示當前的作業路徑 |
| os.chdir() | 切換作業路徑 |
| os.mkdir() | 在某個目錄下創建一個新目錄 |
| os.rmdir() | 洗掉一個目錄 |
| os.listdir() | 獲取當前路徑下的目錄串列,回傳串列格式資料 |
| os.path.isdir() | 判斷當前檔案是否是目錄,回傳布林值 |
| os.path.isfile() | 判斷當前檔案是否是檔案,回傳布林值 |
??
??路徑有兩種概念,相對路徑和絕對路徑,表格如下:
| 名詞 | 描述 |
|---|---|
| 絕對路徑 | 指目錄下的絕對位置,直接到達目標位置,通常是從盤符開始的路徑 |
| 相對路徑 | 指由這個檔案所在的路徑引起的跟其它檔案(或檔案夾)的路徑關系 |
??代碼展示如下,代碼中只列舉了在自動化測驗中會使用到的一些路徑處理方式,大家需要掌握,其他方式了解即可,需要使用時可以查看對應的表格說明:
# __file__,當前的檔案路徑
print(f"當前路徑為: {__file__}")
# 匯入os模塊
import os
# 獲取當前檔案的絕對路徑,"."點代表的意思是當前目錄
cwd = os.path.abspath('.')
print(f"該檔案的絕對路徑為: {cwd}")
# 獲取路徑的目錄
dir_name = os.path.dirname(cwd)
print(f"路徑的目錄為: {dir_name}")
# 路徑拼接,這里只是拼接了路徑,純展示
new_dir1 = os.path.join(dir_name, "正在拼接")
print(new_dir1)
# 路徑拼接舉例2,這里檔案舉例,這樣也只是純展示而已,并不會新創建一個檔案,如果想新創建檔案,我們需要用到open函式
new_dir2 = os.path.join(dir_name, "new_file.txt")
print(new_dir2)
# 創建路徑下的檔案
f = open("new_file.txt", encoding="utf-8", mode="w")
f.close()
??
??
??好啦~以上就是本次文章分享的全部內容啦,你學會了嗎?希望能給大家帶來幫助哦!
??
??

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/414026.html
標籤:其他
