Python基礎之內置模塊詳解
一、os
import os # 1. 獲取當前腳本絕對路徑 """ abs_path = os.path.abspath(__file__) print(abs_path) """ # 2. 獲取當前文件的上級目錄 """ 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. 創建文件夾 """ 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'] """ """ 要遍歷一個文件夾下的所有文件,例如:遍歷文件夾下的所有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/[email protected]","/Users/hqss/PycharmProjects/CodeRepository/") shutil.copy("/Users/hqss/Desktop/圖/csdn/[email protected]","/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. 導入模塊路徑 """ print(sys.path) """
- argv,執行腳本時,python解釋器後面傳入的參數
import sys print(sys.argv) # [ # '/Users/hqss/PycharmProjects/luffyCourse/day14/2.接受執行腳本的參數.py' # ] # [ # "2.接受執行腳本的參數.py" # ] # ['2.接受執行腳本的參數.py', '127', '999', '666', 'wupeiqi'] # 例如,請實現下載圖片的一個工具。 def download_image(url): print("下載圖片", url) def run(): # 接受用戶傳入的參數 url_list = sys.argv[1:] for url in url_list: download_image(url) if __name__ == '__main__': run()
四、random
import random # 1. 獲取范圍內的隨機整數 v = random.randint(10, 20) print(v) # 2. 獲取范圍內的隨機小數 v = random.uniform(1, 10) print(v) # 3. 隨機抽取一個元素 v = random.choice([11, 22, 33, 44, 55]) print(v) # 4. 隨機抽取多個元素 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
詳見地址,Python使用configparser讀取ini配置文件,https://www.jb51.net/article/187233.htm
七、xml
詳見地址,python自定義解析簡單xml格式文件的方法,https://www.jb51.net/article/65886.htm
八、json
json模塊,是python內部的一個模塊,可以將python的數據格式 轉換為json格式的數據,也可以將json格式的數據轉換為python的數據格式。
json格式,是一個數據格式(本質上就是個字符串,常用語網絡數據傳輸)
# Python中的數據類型的格式 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格式的作用
跨語言數據傳輸,例如:
A系統用Python開發,有列表類型和字典類型等。
B系統用Java開發,有數組、map等的類型。語言不同,基礎數據類型格式都不同。
為瞭方便數據傳輸,大傢約定一個格式:json格式,每種語言都是將自己數據類型轉換為json格式,也可以將json格式的數據轉換為自己的數據類型。
Python數據類型與json格式的相互轉換:
- 數據類型 -> 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格式 -> 數據類型,一般稱為:反序列化
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的數據類型轉換為 json 格式,對數據類型是有要求的,默認隻支持:
+-------------------+---------------+ | 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
才能實現
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
,序列化生成一個字符串。
json.loads
,發序列化生成python數據類型。
json.dump
,將數據序列化並寫入文件(不常用)
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
,讀取文件中的數據並反序列化為python的數據類型(不常用)
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 # 獲取當前時間戳(自1970-1-1 00:00) v1 = time.time() print(v1) # 時區 v2 = time.timezone # 停止n秒,再執行後續的代碼。 time.sleep(5)
十、datetime
在平時開發過程中的時間一般是以為如下三種格式存在:
- datetime
from datetime import datetime, timezone, timedelta v1 = datetime.now() # 當前本地時間 print(v1) tz = timezone(timedelta(hours=7)) # 當前東7區時間 v2 = datetime.now(tz) print(v2) v3 = datetime.utcnow() # 當前UTC時間 print(v3)
from datetime import datetime, timedelta v1 = datetime.now() print(v1) # 時間的加減 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() # 當前UTC時間 print(v2) # datetime之間相減,計算間隔時間(不能相加) data = v1 - v2 print(data.days, data.seconds / 60 / 60, data.microseconds) # datetime類型 - datetime類型 # datetime類型 比較 datetime類型
- 字符串
# 字符串格式的時間 ---> 轉換為datetime格式時間 text = "2021-11-11" v1 = datetime.strptime(text,'%Y-%m-%d') # %Y 年,%m,月份,%d,天。 print(v1)
# datetime格式 ----> 轉換為字符串格式 v1 = datetime.now() val = v1.strftime("%Y-%m-%d %H:%M:%S") print(val)
- 時間戳
# 時間戳格式 --> 轉換為datetime格式 ctime = time.time() # 11213245345.123 v1 = datetime.fromtimestamp(ctime) print(v1)
# datetime格式 ---> 轉換為時間戳格式 v1 = datetime.now() val = v1.timestamp() print(val)
補充:
- UTC/GMT:世界時間
- 本地時間:本地時區的時間。
Python中關於時間處理的模塊有兩個,分別是time和datetime。
至此,Python常用的10個內置模塊總結到此結束,歡迎大傢 批評指正!
到此這篇關於Python基礎之內置模塊詳解的文章就介紹到這瞭,更多相關Python內置模塊內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 使用python對視頻文件分辨率進行分組的實例代碼
- Python文件目錄操作常用模塊的使用詳解
- Python文件系統模塊pathlib庫
- python解析照片拍攝時間進行圖片整理
- python實現MD5進行文件去重的示例代碼