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 ...