常用模块

mac2022-06-30  86

常用模块

time模块datetime模块random()模块os模块sys模块json和pickle模块

time模块

time():时间戳,返回从1970年1月1日00:00:00开始到现在的秒数

import time print(time.time()) # 1552551519.291029

sleep():睡眠,将程序暂停,单位时间秒

import time print(time.time) # 1566197319.9459393 time.sleep(3) print(time.time) # 1566197322.9461224

datetime模块

datetime.now():返回当前时间

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模块

random():返回大于零小于一的小数

import random print(random.random()) # 0.44605774683098387

randint():返回一个给定范围的整数

import random print(random.randint(1,3)) # 2 ##返回大于等于1小于3的整数

randrange():返回一个给定范围的整数

import random print(random.randrange(1,3)) # 1 ##返回大于等于1小于3的整数

uniform():返回一个给定范围的小数

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]

os模块

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

sys模块

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']

hashlib模块

md5():可用于文件校验与加密
import hashlib m = hashlib.md5() m.update(b'123456') print(m.hexdigest()) # e10adc3949ba59abbe56e057f20f883e

hmac模块

import hmac m = hmac.new(b'123') m.update(b'123456') print(m.hexdigest()) # a31dce88633f3393f6c475525ff48301

json模块

序列化: 将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)

pickle模块

​ 不能跨平台,但是支持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)

logging模块

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()

转载于:https://www.cnblogs.com/Gredae/p/11377919.html

最新回复(0)