Python基礎(chǔ)之內(nèi)置模塊詳解
一、os
import os
# 1. 獲取當(dāng)前腳本絕對(duì)路徑
"""
abs_path = os.path.abspath(__file__)
print(abs_path)
"""
# 2. 獲取當(dāng)前文件的上級(jí)目錄
"""
base_path = os.path.dirname( os.path.dirname(路徑) )
print(base_path)
"""
# 3. 路徑拼接
"""
p1 = os.path.join(base_path, 'xx')
print(p1)
p2 = os.path.join(base_path, 'xx', 'oo', 'a1.png')
print(p2)
"""
# 4. 判斷路徑是否存在
"""
exists = os.path.exists(p1)
print(exists)
"""
# 5. 創(chuàng)建文件夾
"""
os.makedirs(路徑)
"""
"""
path = os.path.join(base_path, 'xx', 'oo', 'uuuu')
if not os.path.exists(path):
os.makedirs(path)
"""
# 6. 是否是文件夾
"""
file_path = os.path.join(base_path, 'xx', 'oo', 'uuuu.png')
is_dir = os.path.isdir(file_path)
print(is_dir) # False
folder_path = os.path.join(base_path, 'xx', 'oo', 'uuuu')
is_dir = os.path.isdir(folder_path)
print(is_dir) # True
"""
# 7. 刪除文件或文件夾
"""
os.remove("文件路徑")
"""
"""
path = os.path.join(base_path, 'xx')
shutil.rmtree(path)
"""
- listdir,查看目錄下所有的文件
- walk,查看目錄下所有的文件(含子孫文件)
import os
"""
data = os.listdir("/Users/hqss/PycharmProjects/luffyCourse/day14/commons")
print(data)
# ['convert.py', '__init__.py', 'page.py', '__pycache__', 'utils.py', 'tencent']
"""
"""
要遍歷一個(gè)文件夾下的所有文件,例如:遍歷文件夾下的所有mp4文件
"""
data = os.walk("/Users/hqss/Documents/視頻教程/路飛Python/mp4")
for path, folder_list, file_list in data:
for file_name in file_list:
file_abs_path = os.path.join(path, file_name)
ext = file_abs_path.rsplit(".",1)[-1]
if ext == "mp4":
print(file_abs_path)
二、shutil
import shutil
# 1. 刪除文件夾
"""
path = os.path.join(base_path, 'xx')
shutil.rmtree(path)
"""
# 2. 拷貝文件夾
"""
shutil.copytree("/Users/hqss/Desktop/圖/csdn/","/Users/hqss/PycharmProjects/CodeRepository/files")
"""
# 3.拷貝文件
"""
shutil.copy("/Users/hqss/Desktop/圖/csdn/WX20201123-112406@2x.png","/Users/hqss/PycharmProjects/CodeRepository/")
shutil.copy("/Users/hqss/Desktop/圖/csdn/WX20201123-112406@2x.png","/Users/hqss/PycharmProjects/CodeRepository/x.png")
"""
# 4.文件或文件夾重命名
"""
shutil.move("/Users/hqss/PycharmProjects/CodeRepository/x.png","/Users/hqss/PycharmProjects/CodeRepository/xxxx.png")
shutil.move("/Users/hqss/PycharmProjects/CodeRepository/files","/Users/hqss/PycharmProjects/CodeRepository/images")
"""
# 5. 壓縮文件
"""
# base_name,壓縮后的壓縮包文件
# format,壓縮的格式,例如:"zip", "tar", "gztar", "bztar", or "xztar".
# root_dir,要壓縮的文件夾路徑
"""
# shutil.make_archive(base_name=r'datafile',format='zip',root_dir=r'files')
# 6. 解壓文件
"""
# filename,要解壓的壓縮包文件
# extract_dir,解壓的路徑
# format,壓縮文件格式
"""
# shutil.unpack_archive(filename=r'datafile.zip', extract_dir=r'xxxxxx/xo', format='zip')
三、sys
import sys # 1. 獲取解釋器版本 """ print(sys.version) print(sys.version_info) print(sys.version_info.major, sys.version_info.minor, sys.version_info.micro) """ # 2. 導(dǎo)入模塊路徑 """ print(sys.path) """
- argv,執(zhí)行腳本時(shí),python解釋器后面?zhèn)魅氲膮?shù)
import sys
print(sys.argv)
# [
# '/Users/hqss/PycharmProjects/luffyCourse/day14/2.接受執(zhí)行腳本的參數(shù).py'
# ]
# [
# "2.接受執(zhí)行腳本的參數(shù).py"
# ]
# ['2.接受執(zhí)行腳本的參數(shù).py', '127', '999', '666', 'wupeiqi']
# 例如,請(qǐng)實(shí)現(xiàn)下載圖片的一個(gè)工具。
def download_image(url):
print("下載圖片", url)
def run():
# 接受用戶傳入的參數(shù)
url_list = sys.argv[1:]
for url in url_list:
download_image(url)
if __name__ == '__main__':
run()
四、random
import random # 1. 獲取范圍內(nèi)的隨機(jī)整數(shù) v = random.randint(10, 20) print(v) # 2. 獲取范圍內(nèi)的隨機(jī)小數(shù) v = random.uniform(1, 10) print(v) # 3. 隨機(jī)抽取一個(gè)元素 v = random.choice([11, 22, 33, 44, 55]) print(v) # 4. 隨機(jī)抽取多個(gè)元素 v = random.sample([11, 22, 33, 44, 55], 3) print(v) # 5. 打亂順序 data = [1, 2, 3, 4, 5, 6, 7, 8, 9] random.shuffle(data) print(data)
五、hashlib
import hashlib
hash_object = hashlib.md5()
hash_object.update("武沛齊".encode('utf-8'))
result = hash_object.hexdigest()
print(result)
import hashlib
hash_object = hashlib.md5("iajfsdunjaksdjfasdfasdf".encode('utf-8'))
hash_object.update("武沛齊".encode('utf-8'))
result = hash_object.hexdigest()
print(result)
六、configparser
詳見(jiàn)地址,Python使用configparser讀取ini配置文件,https://www.jb51.net/article/187233.htm
七、xml
詳見(jiàn)地址,python自定義解析簡(jiǎn)單xml格式文件的方法,https://www.jb51.net/article/65886.htm
八、json
json模塊,是python內(nèi)部的一個(gè)模塊,可以將python的數(shù)據(jù)格式 轉(zhuǎn)換為json格式的數(shù)據(jù),也可以將json格式的數(shù)據(jù)轉(zhuǎn)換為python的數(shù)據(jù)格式。
json格式,是一個(gè)數(shù)據(jù)格式(本質(zhì)上就是個(gè)字符串,常用語(yǔ)網(wǎng)絡(luò)數(shù)據(jù)傳輸)
# Python中的數(shù)據(jù)類型的格式
data = [
{"id": 1, "name": "武沛齊", "age": 18},
{"id": 2, "name": "alex", "age": 18},
('wupeiqi',123),
]
# JSON格式
value = '[{"id": 1, "name": "武沛齊", "age": 18}, {"id": 2, "name": "alex", "age": 18},["wupeiqi",123]]'
核心功能
json格式的作用
跨語(yǔ)言數(shù)據(jù)傳輸,例如:
A系統(tǒng)用Python開(kāi)發(fā),有列表類型和字典類型等。
B系統(tǒng)用Java開(kāi)發(fā),有數(shù)組、map等的類型。語(yǔ)言不同,基礎(chǔ)數(shù)據(jù)類型格式都不同。
為了方便數(shù)據(jù)傳輸,大家約定一個(gè)格式:json格式,每種語(yǔ)言都是將自己數(shù)據(jù)類型轉(zhuǎn)換為json格式,也可以將json格式的數(shù)據(jù)轉(zhuǎn)換為自己的數(shù)據(jù)類型。

Python數(shù)據(jù)類型與json格式的相互轉(zhuǎn)換:
- 數(shù)據(jù)類型 -> json ,一般稱為:序列化
import json
data = [
{"id": 1, "name": "華青水上", "age": 18},
{"id": 2, "name": "alex", "age": 18},
]
res = json.dumps(data)
print(res) # '[{"id": 1, "name": "\u6b66\u6c9b\u9f50", "age": 18}, {"id": 2, "name": "alex", "age": 18}]'
res = json.dumps(data, ensure_ascii=False)
print(res) # '[{"id": 1, "name": "華青水上", "age": 18}, {"id": 2, "name": "alex", "age": 18}]'
- json格式 -> 數(shù)據(jù)類型,一般稱為:反序列化
import json
data_string = '[{"id": 1, "name": "華青水上", "age": 18}, {"id": 2, "name": "alex", "age": 18}]'
data_list = json.loads(data_string)
print(data_list)
類型要求
python的數(shù)據(jù)類型轉(zhuǎn)換為 json 格式,對(duì)數(shù)據(jù)類型是有要求的,默認(rèn)只支持:
+-------------------+---------------+
| Python| JSON |
+===================+===============+
| dict | object |
+-------------------+---------------+
| list, tuple | array|
+-------------------+---------------+
| str| string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false|
+-------------------+---------------+
| None | null |
+-------------------+---------------+
data = [
{"id": 1, "name": "武沛齊", "age": 18},
{"id": 2, "name": "alex", "age": 18},
]
其他類型如果想要支持,需要自定義JSONEncoder才能實(shí)現(xiàn)
import json
from decimal import Decimal
from datetime import datetime
data = [
{"id": 1, "name": "武沛齊", "age": 18, 'size': Decimal("18.99"), 'ctime': datetime.now()},
{"id": 2, "name": "alex", "age": 18, 'size': Decimal("9.99"), 'ctime': datetime.now()},
]
class MyJSONEncoder(json.JSONEncoder):
def default(self, o):
if type(o) == Decimal:
return str(o)
elif type(o) == datetime:
return o.strftime("%Y-%M-%d")
return super().default(o)
res = json.dumps(data, cls=MyJSONEncoder)
print(res)
其他功能
json模塊中常用的是:
json.dumps,序列化生成一個(gè)字符串。
json.loads,發(fā)序列化生成python數(shù)據(jù)類型。
json.dump,將數(shù)據(jù)序列化并寫入文件(不常用)
import json
data = [
{"id": 1, "name": "武沛齊", "age": 18},
{"id": 2, "name": "alex", "age": 18},
]
file_object = open('xxx.json', mode='w', encoding='utf-8')
json.dump(data, file_object)
file_object.close()
json.load,讀取文件中的數(shù)據(jù)并反序列化為python的數(shù)據(jù)類型(不常用)
import json
file_object = open('xxx.json', mode='r', encoding='utf-8')
data = json.load(file_object)
print(data)
file_object.close()
九、time
import time # 獲取當(dāng)前時(shí)間戳(自1970-1-1 00:00) v1 = time.time() print(v1) # 時(shí)區(qū) v2 = time.timezone # 停止n秒,再執(zhí)行后續(xù)的代碼。 time.sleep(5)
十、datetime
在平時(shí)開(kāi)發(fā)過(guò)程中的時(shí)間一般是以為如下三種格式存在:
- datetime
from datetime import datetime, timezone, timedelta v1 = datetime.now() # 當(dāng)前本地時(shí)間 print(v1) tz = timezone(timedelta(hours=7)) # 當(dāng)前東7區(qū)時(shí)間 v2 = datetime.now(tz) print(v2) v3 = datetime.utcnow() # 當(dāng)前UTC時(shí)間 print(v3)
from datetime import datetime, timedelta v1 = datetime.now() print(v1) # 時(shí)間的加減 v2 = v1 + timedelta(days=140, minutes=5) print(v2) # datetime類型 + timedelta類型
from datetime import datetime, timezone, timedelta v1 = datetime.now() print(v1) v2 = datetime.utcnow() # 當(dāng)前UTC時(shí)間 print(v2) # datetime之間相減,計(jì)算間隔時(shí)間(不能相加) data = v1 - v2 print(data.days, data.seconds / 60 / 60, data.microseconds) # datetime類型 - datetime類型 # datetime類型 比較 datetime類型
- 字符串
# 字符串格式的時(shí)間 ---> 轉(zhuǎn)換為datetime格式時(shí)間 text = "2021-11-11" v1 = datetime.strptime(text,'%Y-%m-%d') # %Y 年,%m,月份,%d,天。 print(v1)
# datetime格式 ----> 轉(zhuǎn)換為字符串格式
v1 = datetime.now()
val = v1.strftime("%Y-%m-%d %H:%M:%S")
print(val)
- 時(shí)間戳
# 時(shí)間戳格式 --> 轉(zhuǎn)換為datetime格式 ctime = time.time() # 11213245345.123 v1 = datetime.fromtimestamp(ctime) print(v1)
# datetime格式 ---> 轉(zhuǎn)換為時(shí)間戳格式 v1 = datetime.now() val = v1.timestamp() print(val)

補(bǔ)充:
- UTC/GMT:世界時(shí)間
- 本地時(shí)間:本地時(shí)區(qū)的時(shí)間。
Python中關(guān)于時(shí)間處理的模塊有兩個(gè),分別是time和datetime。
至此,Python常用的10個(gè)內(nèi)置模塊總結(jié)到此結(jié)束,歡迎大家 批評(píng)指正!
到此這篇關(guān)于Python基礎(chǔ)之內(nèi)置模塊詳解的文章就介紹到這了,更多相關(guān)Python內(nèi)置模塊內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信