python常用模块
os
!-*- coding:utf-8 -*-
#date: 2020/4/17
import os
print(os.getcwd()) #获取当前路径
os.chdir('') # 切换工作目录
os.curdir() # .
os.pardir # ..
os.mkdir('gao') # 当前工作目录下建立单层目录 \gao
os.makedirs('gao\\qi') # 当前工作目录下建立层级目录 \gao\qi 目录
os.rmdir('gao\\qi') # 只删除最后一层单层目录,只删除空路径
os.removedirs('gao\\qi') # 删除指定路径,只删除空路径
os.listdir(r'C:\Users\gaoqifa\Desktop\study\login') # 列表形式列出路径下所有内容
os.remove('aaaa') # 删除文件
os.rename("study_os.py","learn_os.py") # 重命名
print(os.stat('春晓'))
s = os.sep # 取出路径分隔符 win:\ linux:/
os.linesep # 取出换行符 win:/r/n linux:/n
os.pathsep # 取出文件路径分割符 win:; Linux::
print(os.system('dir')) # python中使用cmd或shell命令等
print(os.environ) # 获取环境变量
print(os.path.abspath('春晓')) #根据相对路径获取绝对路径
print(os.path.abspath(__file__)) # 获取当前py文件所在路径
print(os.path.dirname(r'c:\use\eee\ppp\login')) # 返回输入参数上一层级文件夹的绝对路径
print(os.path.basename(r'C:use\Desktop\gao')) # 根据引入变量,返回文件名,或最终目录名
os.path.join([r'C:use\Desktop\gao',r'qi']) # 与字符串的join函数类似,用于连接路径
sys
#!-*- coding:utf-8 -*-
#date: 2020/4/17
import sys
print(sys.argv) # 已列表方式打印出命令行输入的值 默认第一个参数为执行文件名 》 ['C:/Users/Desktop/study/login/learn_sys.py']
if sys.argv[0] == 'post':
print("post success")
sys.exit() # 退出程序,正常退出时,exit(0)
print(sys.version) # 获取当前python的版本信息 》 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]
print(sys.path) # 获取当前的模块使用路径
需要调用自定义模块 添加模块使用路径
sys.path.append(r'C:\User\object') # 注意 添加模块路径使用绝对路径
print(sys.platform) # 系统平台信息 》 win32
sys.stdout.write('please:') # 标准输出 由于打印一般当执行完成,才会统一输出,比如用到进度条时,需要时刻刷新 故需要用到此函数
sys.stdout.flush() # 立即刷新标准输出
# 简单的实时进度条代码:
import time
for i in range(30):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(1)
3. time
import time
print(time.time()) # 获取当前时间戳 1587118642.6632118
print(time.ctime()) # 获取日期时间 Fri Apr 17 18:17:22 2020
time.sleep(3) # 系统休眠
print(time.clock()) # cpu运行时间 2e-07
print(time.gmtime()) # utc时间(本初子午线当前时间)time.struct_time(tm_year=2020, tm_mon=4, tm_mday=17, tm_hour=10, tm_min=11, tm_sec=31, tm_wday=4, tm_yday=108, tm_isdst=0)
print(time.localtime()) # 本地时区时间(中国,东八区) time.struct_time(tm_year=2020, tm_mon=4, tm_mday=17, tm_hour=18, tm_min=11, tm_sec=31, tm_wday=4, tm_yday=108, tm_isdst=0)
print(time.strftime('%Y-%m-%d%H,%M,%S,%z')) # 自定义字符串格式 输出当前时间 !格式化时间 2020-04-1718,11,31,+0800
a = time.strptime("2020-03-01 10,10,10","%Y-%m-%d %H,%M,%S") # 自定义格式 读取字符串时间 返回结构化时间
print(a.tm_year) #按结构话时间,获取所需 #2020
# 时间戳
print(time.mktime(a)) # 按结构化时间 获取时间戳 1583028610.0
random
import random
# 建立5位的随机码
#第一种方式
def code():
num = ''
for i in range(5):
add_al = chr(random.randrange(65, 91))
add_num = str(random.randrange(0, 10))
add = random.randrange(0, 2)
if add == 0:
num = "".join((num,add_al))
else:
num = "".join((num,add_num))
print(num)
code()
第二种方式
def code2():
num = ''
for i in range(5):
add = random.choice((chr(random.randrange(65,91)),str(random.randrange(0,10))))
num = ''.join((num,add))
print(num)
code2()
logging
#!-*- coding:utf-8 -*-
#date: 2020/4/17
import logging
# level 默认为warning最低打印级别,可指定设置
# format 设定日志输出格式 asctime:记录时间、filename:记录记录日志的脚本文件名称、lineno:记录脚本文件的多少行执行的日志记录、levelname:日志等级名称、message:记录消息内容
# datefmt 时间格式
# filename 保存日志的文件名称 不增加filename字段默认使用终端打印方式提示,增加filename字段表示使用文件记录
# filemode 设置对文件的操作:r读 w写 a增
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s >>> %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filename='test.log',
filemode='a'
)
logging.debug("debug")
logging.info("info")
logging.warning('warming')
logging.error("error")
logging.critical('critical')
结果:
2020-04-17 20:59:01 learn_logging.py[line:22] DEBUG >>> debug
2020-04-17 20:59:01 learn_logging.py[line:23] INFO >>> info
2020-04-17 20:59:01 learn_logging.py[line:24] WARNING >>> warming
2020-04-17 20:59:01 learn_logging.py[line:25] ERROR >>> error
2020-04-17 20:59:01 learn_logging.py[line:26] CRITICAL >>> critical
上述代码只能做到将日志记录到一处(文件或控制台),需要同时保存到文件,且在控制台打印的方法如下:
import logging
# 取出logger对象
# 此函数也可进行设置记录人员信息,记录最低层级等 # logger = logging.getLogger('root',level=logging.INFO)
logger = logging.getLogger()
# 创建一个handler对象,用于写入日志文件
fh = logging.FileHandler('test1.log')
# 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
# 标准输出格式对象
formatter = logging.Formatter('%(asctime)s - [%(filename)s:%(lineno)d - %(levelname)s - %(message)s')
# 文件输出调取日志标准输出格式
fh.setFormatter(formatter)
# 控制台输出调取日志标准输出格式
ch.setFormatter(formatter)
# logger 增加日志文件输出方式
logger.addHandler(fh)
# logger 增肌日志控制台输出方式
logger.addHandler(ch)
# 设置最低记录级别
logger.setLevel(logging.DEBUG)
# 此时打印,会同时输出到文件与控制台
logger.debug("debug") #2020-04-17 21:40:25,493 - [learn_logging.py:51 - DEBUG - debug
logger.info("info") #2020-04-17 21:40:25,493 - [learn_logging.py:52 - INFO - info
logger.warning('warming') #2020-04-17 21:40:25,493 - [learn_logging.py:53 - WARNING - warming
logger.error("error") #2020-04-17 21:40:25,493 - [learn_logging.py:54 - ERROR - error
logger.critical('critical') #2020-04-17 21:40:25,493 - [learn_logging.py:55 - CRITICAL - critical