子產品
一、子產品種類
- Python标準庫
- 第三方子產品
- 自定義子產品
Pycharm中,Package和Directory差別: Package含有 __init__.py
二、import子產品導入
import
執行流程和用法
import
step1. 執行import的檔案;
step2. 引入變量名;
step3. 調用 ```module_name.func_name()```;
僅當module路徑在
sys.path
中時,可直接用import語句調用。
from...import...
用法
from...import...
-
from module_name import func_name
-
from package_1.package_2 import module_name
-
from package_1.package_2.module_name import func_name
從Package中引用
-
from package_name import module_name
-
sys.path
添加執行檔案所在目錄,調用下級module需要使用from語句進行調用。
Package用于組織子產品
三、 if __name__ == '__main__'
if __name__ == '__main__'
- 用于調用檔案測試
- 避免檔案被調用時執行主邏輯
四、Python标準庫常用子產品
time
time
time.time() # 時間戳,從1970年1月1日0時至今的秒數(Unix誕生)
time.localtime() # 結構化時間(當地)
time.gmtime() # 結構化時間(标準UTC)
time.mktime() # 将結構化時間轉換為時間戳
time.strftime("%Y/%m/%d %X", time.localtime()) # 将結構化時間轉換為字元串時間
time.strptime("2016/12/24/17/50/36", "%Y/%m/%d/%X") # 将字元串時間轉換為結構化時間
time.asctime() # 字元串時間
time.ctime() # 字元串時間
time.sleep() # 暫停
datetime
datetime
datetime.datetime.now() # 目前日期時間
random
random
random.random()
random.randint()
random.randrange()
random.choice()
random.sample()
random.uniform()
random.shuffle()
os
os
os.getcwd() # 擷取目前工作目錄
os.chdir() # 改變目前腳本的工作目錄
os.makedirs() # 遞歸生成目錄
os.removedirs() # 遞歸删除目錄(隻删除空目錄)
os.mkdir() # 建立單目錄
os.rmdir() # 删除單目錄
os.listdir() # 列出指定目錄下的所有子檔案和目錄(包括隐藏)
os.remove() # 删除單檔案
os.rename() # 重命名
os.stat() # 檔案狀态
os.sep # 目前系統路徑分隔符
os.linesep # 目前系統的行終止符
os.pathsep # 目前平台的用于分割路徑的字元
os.system(command) # 執行指令
os.path.split(path) # 将path 分割成(目錄, 檔案名)
os.path.dirname() # 路徑名
os.path.basename() # 檔案名
os.path.exist() # 判斷路徑是否存在
os.path.isabs() # 是否是絕對路徑
os.path.isfile() # 是否是檔案
os.path.isdir() # 是否是目錄
os.path.join() # 拼接路徑
os.path.getatime() # 檔案或目錄最後的存取時間
os.path.getmtime() # 檔案或目錄的最後修改時間
os.path.abspath() # 絕對路徑
os.path.dirname() # 所屬檔案夾路徑
sys
sys
sys.argv # 擷取指令,傳回list
sys.stdout.write() # 向螢幕輸出
sys.path
sys.exit(n) # 退出
sys.version # 傳回Python版本
sys.maxint # 最大的int值
sys.platform # 傳回作業系統平台名稱
json
json
json.dumps() # 寫入
json.loads() # 讀取
json.dump() # 檔案操作寫入
json.load() # 檔案操作讀取
# 資料結構中必須使用雙引号。
pickle
pickle
pickle.dumps()
pickle.loads()
# pickle後的内容不可讀,對檔案需要使用二進制模式讀寫。
# 支援的資料類型較json多。
shelve
shelve
shelve.open()
# 生成三個檔案。
xml
xml
import xml.etree.ElementTree as ET
obj = ET.parse("file.xml")
root = obj.getroot() # 擷取根節點
print(root.tag) # 擷取标簽名
for i in root:
for j in i.iter('year'): # 選擇'year'節點
print(j.attrib) # 擷取屬性值
print(j.text) # 擷取文本内容
new_year = int(j.text)+1
j.text = str(new_year) # 修改文本内容
j.set("attribute", "value") # 設定屬性
obj.write("file.xml") # 重新寫入
for country in root.findall("country"): # 找到所有country标簽
rank = int(country.find("rank").text) # 找到rank标簽
if rank > 50:
root.remove(country)
obj = ET.Element('root_node')
name = ET.SubElement(obj, 'node_name', attrib={'attr_name':'value'})
xml_obj = ET.ElementTree(obj) # 生成文檔對象
obj.write("file_name", encoding='', xml_declaration=True)
re
re
r # 原生字元 (raw string),避免Python解釋器對規則進行轉義。
re.findall() # 傳回清單
re.search() # 從任意位置開始查找,傳回對象
re.match() # 從起始位置開始查找,傳回對象
re.split() # 分割,傳回清單
re.sub() # 替換,傳回替換後的字元串
re.subn() # 替換并顯示替換次數,傳回元組
re.finditer() # 效果與findall相同,傳回iterator
group() # 用于擷取match/search對象中的資料
logging
logging
import logging
logging.basicConfig(
level=logging.DEBUG, # 設定預設級别
filename='file_name', # 設定目标輸出位置(檔案)
filemode='w', # 更改檔案打開方式(預設為a)
format='%(asctime)s [%(lineno)d] %(message)s'
)
# 日志級别
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message') # 預設從warnning級别開始列印
logging.error('error message')
logging.critical('critical message')
logger = logging.getLogger() # 建立logger對象
fh = logging.FileHandler() #
ch = logging.StreamHandler() #
fm = loggign.Formatter('%(asctime)s')
fh.setFormatter(fm)
ch.setFormatter(ch)
logger.addHandler(fh)
logger.addHandler(ch)
logger.setLevel('DEBUG')
logger.debug()
logger.info()
logger.warning()
logger.error()
logger.critical()
configparser
configparser
import configparser
config = configparser.ConfigParser() # 執行個體化config對象
···
with open('file_name', 'w') as f:
config.write(f) # 注意調用方式
config.read('file_name')
config.options() # 傳回清單
config.items() # 傳回鍵值對
config.get('key1', 'key2') # 擷取對應的值
config.write(open()) # 寫入檔案
config.add_section('') # 新增塊
config.set('section', 'key', 'value') # 在section下添加鍵值對
hashlib
hashlib
import hashlib
obj = hashlib.md5('salt'.encode('uf8'))
obj.update('string'.encode('utf8'))
print(obj.hexdigest()) # 位數固定