time():時間戳,返回從1970年1月1日00:00:00開始到如今的秒數python
import time print(time.time()) # 1552551519.291029
sleep():睡眠,將程序暫停,單位時間秒json
import time print(time.time) # 1566197319.9459393 time.sleep(3) print(time.time) # 1566197322.9461224
datetime.now():返回當前時間dom
import datetime print(datetime.datetime.now()) # 2019-08-19 14:52:07.983833
timedelta():修改時間函數
import datetime print(datetime.datetime.now()+datetime.timedelta(3)) # 2019-08-22 14:53:46.737705 ##默認修改天數 print(datetime.datetime.now()+datetime.timedelta(hours=3)) ##修改小時
replace():時間替換編碼
import datetime c_time = datetime.datetime.now() print(c_time) # 2019-08-19 14:57:37.640741 c_time = c_time.replace(year=1999,month=3,day=10) print(c_time) # 1999-03-10 14:57:37.640741
random():返回大於零小於一的小數加密
import random print(random.random()) # 0.44605774683098387
randint():返回一個給定範圍的整數spa
import random print(random.randint(1,3)) # 2 ##返回大於等於1小於3的整數
randrange():返回一個給定範圍的整數命令行
import random print(random.randrange(1,3)) # 1 ##返回大於等於1小於3的整數
uniform():返回一個給定範圍的小數debug
import random print(random.uniform(1,3)) # 2.479230075181081 ##返回大於1小於3的小數
sample():返回列表中的n個元素日誌
import random print(random.sample([1, '23', [4, 5]], 2)) # ['23', 1]
shuffle():打亂列表中的元素
import random lt = [1, 2, '23', [4, 5]] random.shuffle(lt) print(lt) # [[4, 5], 1, '23', 2]
listdir():列出文件夾內的全部文件
import os print(os.listdir('D://python')) # ['Python37-32']
abspath():返回絕對路徑
import os print(os.path.abspath('E:/Python項目/m1.py')) # E:\Python項目\m1.py
dirname():上一級目錄
import os print(os.path.dirname('E:/Python項目/m1.py')) # E:\Python項目
join():拼接路徑地址
import os print(os.path.join(r'C:\Windows',r'abc\abc')) # C:\Windows\abc\abc
exists():文件是否存在
mport os path = os.path.join(r'C:\Windows\abc\abc','abc.txt') print(os.path.exists(path)) # False ##存在:True 不存在:False
argv():在命令行模式下獲取輸入值
import sys a=sys.argv[0] b=sys.argv[1] c=sys.argv[2] print("filename:",a) print("param1:",b) print("param2:",c) 輸入:python a.py zhang kang 輸出: ('filename:', 'a.py') ('param1:', 'zhang') ('param2:', 'kang')
path():返回系統環境變量
import sys print(sys.path) 輸出:['E:\\Python項目', 'E:\\Python項目', 'D:\\PyCharm 2019.1.3\\helpers\\pycharm_display', 'D:\\Python\\Python37-32\\python37.zip', 'D:\\Python\\Python37-32\\DLLs', 'D:\\Python\\Python37-32\\lib', 'D:\\Python\\Python37-32', 'D:\\Python\\Python37-32\\lib\\site-packages', 'D:\\PyCharm 2019.1.3\\helpers\\pycharm_matplotlib_backend']
import hashlib m = hashlib.md5() m.update(b'123456') print(m.hexdigest()) # e10adc3949ba59abbe56e057f20f883e
import hmac m = hmac.new(b'123') m.update(b'123456') print(m.hexdigest()) # a31dce88633f3393f6c475525ff48301
序列化: 將python的數據類型存成 json串,支持跨平臺
dic = {'a':1} # 內存中轉化 data = json.dumps(dic) # 文件中轉化 with open(path,'w') as fw: json.dump(dic, fw)
反序列化: 將json串 讀成python的數據類型,支持跨平臺
dic = {'a':1} # 內存中轉化 data = json.loads(data) # 文件中轉化 with open(path,'r') as fr: data = json.load(fr)
不能跨平臺,可是支持python全部數據類型
序列化: 將python的數據類型存成 json串
dic = {'a':1} # 內存中轉化 data = pickle.dumps(dic) # 文件中轉化 with open(path,'w') as fw: pickle.dump(dic, fw)
反序列化: 將json串 讀成python的數據類型
dic = {'a':1} # 內存中轉化 data = pickle.loads(data) # 文件中轉化 with open(path,'r') as fr: data = pickle.load(fr)
import logging # 1. 生成logger對象 logger = logging.getLogger('nick') logger1 = logging.getLogger('jason') # 2. 格式 formmater1 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',datefmt='%Y-%m-%d %H:%M:%S %p',) formmater2 = logging.Formatter('%(asctime)s : %(message)s',datefmt='%Y-%m-%d %H:%M:%S %p',) formmater3 = logging.Formatter('%(name)s %(message)s',) # 3. 打印對象 h1 = logging.FileHandler('h1.log') sm = logging.StreamHandler() # 4. 打印對象綁定格式 h1.setFormatter(formmater1) sm.setFormatter(formmater2) # 5. logger綁定打印對象 logger.addHandler(h1) logger.addHandler(sm) # 6. 設置級別 logger.setLevel(50) logger.debug('debug') logger.info('info') logger.warning('warning') logger.error('error') logger.critical('critical')
使用配置文件
import os import logging.config # 定義三種日誌輸出格式 開始 standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \ '[%(levelname)s][%(message)s]' # 其中name爲getLogger()指定的名字;lineno爲調用日誌輸出函數的語句所在的代碼行 simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s' id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s' # 定義日誌輸出格式 結束 logfile_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # log文件的目錄,須要自定義文件路徑 # atm logfile_dir = os.path.join(logfile_dir, 'log') # C:\Users\oldboy\Desktop\atm\log logfile_name = 'log.log' # log文件名,須要自定義路徑名 # 若是不存在定義的日誌目錄就建立一個 if not os.path.isdir(logfile_dir): # C:\Users\oldboy\Desktop\atm\log os.mkdir(logfile_dir) # log文件的全路徑 logfile_path = os.path.join(logfile_dir, logfile_name) # C:\Users\oldboy\Desktop\atm\log\log.log # 定義日誌路徑 結束 # log配置字典 LOGGING_DIC = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'standard': { 'format': standard_format }, 'simple': { 'format': simple_format }, }, 'filters': {}, # filter能夠不定義 'handlers': { # 打印到終端的日誌 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', # 打印到屏幕 'formatter': 'simple' }, # 打印到文件的日誌,收集info及以上的日誌 'default': { 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', # 保存到文件 'formatter': 'standard', 'filename': logfile_path, # 日誌文件 'maxBytes': 1024 * 1024 * 5, # 日誌大小 5M (*****) 'backupCount': 5, 'encoding': 'utf-8', # 日誌文件的編碼,不再用擔憂中文log亂碼了 }, }, 'loggers': { # logging.getLogger(__name__)拿到的logger配置。若是''設置爲固定值logger1,則下次導入必須設置成logging.getLogger('logger1') '': { # 這裏把上面定義的兩個handler都加上,即log數據既寫入文件又打印到屏幕 'handlers': ['default', 'console'], 'level': 'DEBUG', 'propagate': False, # 向上(更高level的logger)傳遞 }, }, } def load_my_logging_cfg(): logging.config.dictConfig(LOGGING_DIC) # 導入上面定義的logging配置 logger = logging.getLogger(__name__) # 生成一個log實例 logger.info('It works!') # 記錄該文件的運行狀態 return logger if __name__ == '__main__': load_my_logging_cfg()