python中常用的內置模塊

內置模塊(一)

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/feimouren/PycharmProjects/luffyCourse/day14/commons")
    print(data)
    # ['convert.py', '__init__.py', 'page.py', '__pycache__', 'utils.py', 'tencent']
    # 無法查看文件夾中子文件夾中的文件
    """ """ 要遍歷一個文件夾下的所有文件,例如:遍歷文件夾下的所有mp4文件
    data獲取到的是一個生成器,在編列生成器時,會獲取到三個元素,1.文件夾路徑,2.文件夾中的文件夾,3.文件
    在遍歷時,如果文件夾中還有文件夾,那麼會繼續遍歷這個文件夾同樣會獲取三個元素。
    """ data = os.walk("/Users/wupeiqi/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/wupeiqi/Desktop/圖/csdn/","/Users/wupeiqi/PycharmProjects/CodeRepository/files")
"""

# 3.拷貝文件
"""
shutil.copy("/Users/wupeiqi/Desktop/圖/csdn/[email protected]","/Users/wupeiqi/PycharmProjects/CodeRepository/")
shutil.copy("/Users/wupeiqi/Desktop/圖/csdn/[email protected]","/Users/wupeiqi/PycharmProjects/CodeRepository/x.png")
"""

# 4.文件或文件夾重命名
"""
shutil.move("/Users/wupeiqi/PycharmProjects/CodeRepository/x.png","/Users/wupeiqi/PycharmProjects/CodeRepository/xxxx.png")
shutil.move("/Users/wupeiqi/PycharmProjects/CodeRepository/files","/Users/wupeiqi/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)
"""

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中的文件 - J.FengS - 博客園 (cnblogs.com)

xml

Python中的文件 - J.FengS - 博客園 (cnblogs.com)

 

json

json模塊,是python內部的一個模塊,可以將python的數據格式 轉換爲json格式的數據,也可以將json格式的數據轉換爲python的數據格式。

json格式,是一個數據格式(本質上就是個字符串,常用語網絡數據傳輸)

# Python中的數據類型的格式
data = [
    {"id": 1, "name": "飛某人", "age": 18},
    {"id": 2, "name": "alex", "age": 18},
    ('feimouren',123),
]

# JSON格式
value = '[{"id": 1, "name": "飛某人", "age": 18}, {"id": 2, "name": "alex", "age": 18},["feimouren",123]]'
  • json格式的作用?
    跨語言數據傳輸,例如:
        A系統用Python開發,有列表類型和字典類型等。
        B系統用Java開發,有數組、map等的類型。
    
        語言不同,基礎數據類型格式都不同。
        
        爲了方便數據傳輸,大家約定一個格式:json格式,每種語言都是將自己數據類型轉換爲json格式,也可以將json格式的數據轉換爲自己的數據類型。

     

     

     

  • Python數據類型與json格式的相互轉換:

    • 數據類型 -> json ,一般稱爲:序列化

      # 實際就是將python的語法代碼變成了字符串
      import json
      
      data = [
          {"id": 1, "name": "飛某人", "age": 18},
          {"id": 2, "name": "alex", "age": 18},
      ]
      
      res = json.dumps(data)  # 裏面的中文字符會根據unicode編碼將中文轉換成16進制
      print(res) # [{"id": 1, "name": "\u98de\u67d0\u4eba", "age": 18}, {"id": 2, "name": "alex", "age": 18}]
      
      res = json.dumps(data, ensure_ascii=False)     # 設置參數爲False後,會保留中文
      print(res) # [{"id": 1, "name": "飛某人", "age": 18}, {"id": 2, "name": "alex", "age": 18}]
    • json格式 -> 數據類型,一般稱爲:反序列化
      """ 反序列化,將特定的字符串變成python中有語法意義的代碼"""
      import json
      
      data_string = '[{"id": 1, "name": "飛某人", "age": 18}, {"id": 2, "name": "alex", "age": 18}]'
      
      # 將字符串data_string變成了data_list列表
      data_list = json.loads(data_string)
      print(type(data_list), data_list)
      for x in data_list:
          print(x)
      """
      運行結果:
      <class 'list'> [{'id': 1, 'name': '飛某人', 'age': 18}, {'id': 2, 'name': 'alex', 'age': 18}]
      {'id': 1, 'name': '飛某人', 'age': 18}
      {'id': 2, 'name': 'alex', 'age': 18}
      """

       

  • 類型要求

    • python的數據類型轉換爲 json 格式,對數據類型是有要求的,默認只支持:
          +-------------------+---------------+
          | Python            | JSON          |
          +===================+===============+
          | dict              | object        |
          +-------------------+---------------+
          | list, tuple       | array         |
          +-------------------+---------------+
          | str               | string        |
          +-------------------+---------------+
          | int, float        | number        |
          +-------------------+---------------+
          | True              | true          |
          +-------------------+---------------+
          | False             | false         |
          +-------------------+---------------+
          | None              | null          |
          +-------------------+---------------+

      其他類型如果想要支持,需要自定義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,將數據序列化並寫入文件(不常用)
    • json.load,讀取文件中的數據並反序列化爲python的數據類型(不常用)
      """將序列化的代碼寫入文件中使用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)  # 將data列表進行序列化,寫入file_object.json文件中
      file_object.close()
      """將文件中的特定字符串反序列化成python中的代碼"""
      import json
      file_object = open('xxx.json', mode='r', encoding='utf-8')
      data_list = json.load(file_object)
      print(type(data_list),data_list)
      """
      運行結果:
      <class 'list'> [{'id': 1, 'name': '飛某人', 'age': 18}, {'id': 2, 'name': 'alex', 'age': 18}]
      """

       

 

 

    

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章