Python 常用模組二

2021-08-26 02:47:49 字數 3822 閱讀 5837

import time

# 結構化輸出本地時間

print(time.localtime())

>>>time.struct_time(tm_year=2018, tm_mon=8, tm_mday=27, tm_hour=17, tm_min=14, tm_sec=21, tm_wday=0, tm_yday=239, tm_isdst=0)

# 將結構化時間轉換成時間

print(time.mktime(time.localtime()))

print(time.time()) # 輸出時間戳,和上面結果一樣

>>>1535361402.0

>>>1535361402.3332605

# 結構化時間轉換字串時間

# %y、%m、%d---->代表年、月、日,%x--->時、分、秒

print(time.strftime('%y+++%m++%d++%x', time.localtime()))

>>>2018+++08++27++17:20:20

# 字串時間轉換結構化時間,中間的'++'可以隨便改寫

print(time.strptime('2018+++08++27++17:20:20','%y+++%m++%d++%x'))

>>>time.struct_time(tm_year=2018, tm_mon=8, tm_mday=27, tm_hour=17, tm_min=20, tm_sec=20, tm_wday=0, tm_yday=239, tm_isdst=-1)

日誌的五個級別:debug、info、warning、error、critical  從低到高的順序

第一種寫日誌的姿勢(low):

import logging

# config 配置的意思

logging.basicconfig(

level=logging.debug, # 定義最低的提示級別

filemode= 'w', # 定義模式

filename='lab.ini', # 定義輸出檔名,輸出檔案預設採用追加的模式

# 日誌的格式%(顯示內容)s 格式固定

format = '%(asctime)s, %(lineno)s' # 定義列印的內容,及格式。 asctime 是顯示本地時間,lineno顯示第幾行列印的報錯日中資訊

)# 上面不定義最低級別,預設最低階為warning

# 列印錯誤資訊

logging.debug('message error')

>>>message error

第二種寫日誌的姿勢:

建立乙個logger物件,logger物件什麼能力也沒有,通過吃其他的來獲得別人的功能。

import logging

# 例項logger物件 root是使用者名稱,可以不寫

logger = logging.getlogger('root')

# 設定報錯的最低等級

logger.setlevel(level='debug')

# 建立乙個位元組流的檔案傳送

fh = logging.filehandler('lab.ini')

# 建立乙個流輸出到螢幕顯示

fs = logging.streamhandler()

# 設定日誌的列印格式

ff = logging.formatter('%(lineno)s,%(asctime)s')

# 讓輸出到檔案和螢幕吃掉列印格式,讓其具有列印格式的功能

fh.setformatter(ff)

fs.setformatter(ff)

# 讓logger吃掉輸出到檔案和螢幕

logger.addhandler(fh)

logger.addhandler(fs)

logger.debug('message error')

>>>message error

子logger在輸出時會檢視父logger有沒有輸出,如果父logger有輸出就自己在列印自己一邊

import logging

# 建立乙個父logger,什麼也不加預設是夫logger

logger = logging.getlogger()

# 建立乙個子logger

logger1 = logging.getlogger('admin')

fs = logging.streamhandler()

logger.addhandler(fs)

logger1.addhandler(fs)

logger.error('message error')

logger1.error('message 1')

>>>message error

message 1

message 1

乙個使資料序列化的模組,只能序列化python基本型別的資料。

import json

# json.dumps()轉換為json字串 (裡面全為雙引號)

# 字串

print(json.dumps('name:123'))

# 數字

print(json.dumps(1))

# 列表

print(json.dumps([1,2,3]))

# 字典

print(json.dumps())

>>>"name:123"

>>>1

>>>[1, 2, 3]

>>>

# 讀乙個json檔案,如果檔案有單引號,就會報錯,不能有單引號

# loads方法

with open('tests1', 'r') as f:

print(json.loads(f.read()))

# load方法,只需要把控制代碼扔進去

with open('tests1', 'r') as f:

print(json.load(f))

# dump方法,dic是要寫入的內容

dic =

with open('tests1', 'a') as f:

print(json.dump(dic,f))

也可以自定義json模組

import json

import datetime

# json內部對資料也是一行行進行遍歷

class myjson(json.jsonencoder): # 自定義json需要繼承這個類

def default(self, fields): # 需要重寫這個方法 fields就是傳過來的引數

if isinstance(fields, datetime.datetime): # 判斷是不是這個型別的資料

return fields.strftime("%y-%m-%d")

elif isinstance(fields,bob):

return fields.__dict__

else:

return json.jsonencoder.default(self, fields) # 預設的序列化方式只能轉化python的基本型別

class bob:

pass

obj = bob()

data =

a = json.dumps(data, cls=myjson) # 加上cls這個引數就表示通過哪個類進行處理

print(a)

物件序列化的型別是先通過 __dict__ 轉換成乙個字典型別的資料,然後對字典進行序列化。

python常用模組介紹(二)

前言 一 第三方模組 二 常用模組之time 總結上一回我聊了一下關於什麼是模組,為什麼使用模組,模組的分類以及如何匯入模組。那麼今天我想聊一下常用的模組 但是,在說常用模組之前,我想先說一下第三方模組 在python中,安裝第三方模組,是通過setuptools這個工具完成的。python有兩個封...

python常用模組介紹之二 copy模組

簡介 copy 模組主要用於複製物件,有淺 copy 和深copy 之分。首先得清楚的理解 物件 的概念 物件 python 萬物皆是物件。物件分為可變和不可變 2類,可變物件如 list,dict 等 不可變物件如 基礎型別,元組等。物件有三大特性分別為 身份 id a 型別 type a 值 a...

Python高階教程 (二) 常用模組

刪庫跑路 import os os.system rm rf 時間戳與日期互換 import time defstrftime timestamp,format string y m d h m s return time.strftime format string,time.localtime ...