一、内置模块
定义:其实模块简单说就是一堆代码实现某个功能,它们是已经写好的.py文件。只需要用import应用即可。
分类:
1. 自定义模块,就是自己写的.py文件为了实现某个功能。
2. 内置标准模块(就是python自身已经写好的某个功能,例如经常用的sys、os等模块都是内置模块。)
3. 开源模块,就是不收费的别人写好的模块,一般也称第三方模块。
模块的引用:
1. import modules
2. from modules import 函数
3. 如果有多个模块,可以用逗号隔开,如果想把某个模块里面的所有功能都导入,可以用*,这样的话功能都加载道内存里面,占用内存资源,不建议用。
1、time模块
import time print(help(time)) print(time.time()) # 1512377060.541332: 时间戳 ***** time.sleep(3) # 停止3秒 ***** print(time.localtime()) # 结构化时间的本地时间 ***** struct_time = time.localtime() print(time.strftime('%Y-%m-%d %H:%M:%S', struct_time)) # 字符串时间 ****** print(time.strptime('2017-12-04 17:10:46', '%Y-%m-%d %H:%M:%S')) # 字符串时间转结构化时间 ***** a = time.strptime('2017-12-04 17:10:46', '%Y-%m-%d %H:%M:%S') # 结构化时间取值 print(a.tm_year) print(a.tm_mday) print(time.ctime()) # 取当前时间 print(time.ctime(1234567890)) # 计算时间戳时间 print(time.mktime(time.localtime())) # 将结构化时间转换为时间戳 print(time.gmtime()) # 结构化时间: time.struct_time(tm_year=2017, tm_mon=12, tm_mday=4, tm_hour=8, tm_min=51, tm_sec=38, tm_wday=0, tm_yday=338, tm_isdst=0) print(time.clock()) # 计算CPU执行时间 # 直接看时间 import datetime print(datetime.datetime.now())
2、OS模块
OS模块是提供对操作系统调用的接口。
print(os.getcwd()) # 获取当前工作目录,及当前python脚本工作的目录路径 os.chdir(r'E:老男孩day_18') # 改变当前脚本的工作目录,相当于linux的cd print(os.getcwd()) print(os.curdir) # 返回当前目录 print(os.pardir) # 获取当前目录父目录字符串名 os.makedirs('abc\mu') # 创建多级目录 os.removedirs('abc\mu') # 先找到最深的目录,如果去空的就进行删除,并递归到上层目录如果有文件就不进行删除 os.mkdir('dirname') # 只能创建一个目录 os.rmdir('dirname') # 删除一个空的目录,非空报错 print(os.listdir(r'E:老男孩day_18')) # 打印出路径的下的所有dir和file os.remove('file') # 删除一个文件 os.rename('oldname', 'newname') # 重命名文件/目录 os.stat('path/filename'.st_size) # 获取文件/目录信息(大小) os.stat('path/filename'.st_atime) # 获取文件/目录信息(最后一次访问的时间) print(os.sep) # 输出操作系统特定的路径分隔符,win下为'\',Linux下为'/' s = os.sep # 用s连接路径,可解决win和linux不同的路径分隔符 os.linesep # 输出当前操作体统的换行符,win下为' ',Linux下为' ' s = os.linesep # 用s代理,解决不同的换行符 os.pathsep # 输出当前操作系统用于分割文件的符号,win下为';',linux下为':' os.name # 输出字符串提示当前适用平台。win为'nt',linux为'posix' os.system('ifconfig') # 执行shell命令 os.environ # 获取系统环境变量 print(os.path.abspath('./os_模块')) # 获取文件的据对路径 print(os.path.split(r'E:我的坚果云Py_Program老男孩week_04day_18os_模块')) # 分割路径和文件 print(os.path.dirname(r'E:我的坚果云Py_Program老男孩week_04day_18os_模块')) # 答打印出这个文件的绝对路径 print(os.path.basename(r'E:我的坚果云Py_Program老男孩week_04day_18os_模块')) # 返回path最后的文件名,如果是以/或者结尾,返回空值 os.path.exists(path) # 判断文件是否存在,存在为True,反之为False os.path.isabs(path) # 如果path是绝对路径,返回True os.path.isfile(path) # 判断path是否为一个存在的文件,返回True、False os.path.isdir(path) # 判断path是否为一个存在的目录,返回True、False os.path.join([a, b]) # 路径拼接 os.path.getatime() # 返回path所指向的文件或者目录最后的存取时间 os.path.getmtime() # 返回path所指向的文件或者目录最后的修改时间
3、sys模块
sys模块是和python解释器进行交互。
sys.exit(n) # 退出程序,正常退出时exit(0) print(sys.version) # 获取Python程序解释器的版本信息 print(sys.maxsize) # 获取最大Int值 print(sys.path) # 获取模块路径,如果要手动添加模块,就手动将路径添加进去 print(sys.platform) # 返回操作系统平台名称 if sys.platform == 'win32': # 跨平台判断 os.system('dir') elif sys.platform == 'Linux': os.system('ls -l') sys.stdout.write('please')
4、hashlib模块
用于明文和密文转换。
m = hashlib.md5() # 调用算法 print(m) m.update('hello'.encode('utf8')) # 为m赋值 print(m.hexdigest()) m.update('imomy'.encode('utf8')) # 再次更新m的值 print(m.hexdigest()) m2 = hashlib.md5() # 调用算法 m2.update('helloimomy'.encode('utf8')) # 为m2赋值 print(m2.hexdigest()) # 查看
实际用例:
import hashlib s = hashlib.sha256() s.update('hello'.encode('utf8')) print(s.hexdigest())
5、随机数random模块
import random print(random.randint(1,10)) # 取1-10的随机数 print(random.randrange(1,10)) # 取1-9的随机数 print(random.choice('hello')) # 取字符串或序列的某个值 print(random.choice(['12', '3', '4', [1, 2]])) # 取字符串或序列的某个值 print(random.sample(['12', '3', '4', [1, 2]], 2)) # 在序列中选多个值
编写验证码:
import random def check(): code = '' for i in range(5): add = random.choice([random.randrange(0,9), chr(random.randrange(66,91))]) code = code + str(add) return code print(check())
6、日志模块
默认情况下Python的logging的模块将日志打印到标准输出中,,且只显示大于等于warning级别的日志,这说明默认的日志级别为warning,默认的日志格式为:日志级别:logger名称:用户输出的信息
import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S', filename='test.log', filemode='a') # logging.basicConfig函数各参数: # filename: 指定日志文件名 # filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a' # format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示: # %(levelno)s: 打印日志级别的数值 # %(levelname)s: 打印日志级别名称 # %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0] # %(filename)s: 打印当前执行程序名 # %(funcName)s: 打印日志的当前函数 # %(lineno)d: 打印日志的当前行号 # %(asctime)s: 打印日志的时间 # %(thread)d: 打印线程ID # %(threadName)s: 打印线程名称 # %(process)d: 打印进程ID # %(message)s: 打印日志信息 # datefmt: 指定时间格式,同time.strftime() # level: 设置日志级别,默认为logging.WARNING # stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略 logging.debug('debug') logging.info('info') logging.warning('warning') logging.error('errot') logging.critical('critical')
另外还有一个模块级别的函数,是logging:
import logging logger = logging.getLogger() fh = logging.FileHandler('def_test.log') # 文件对象 ch = logging.StreamHandler() # 屏幕输出对象 formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s') logger.setLevel(logging.DEBUG) fh.setFormatter(formatter) ch.setFormatter(formatter) logger.addHandler(fh) logger.addHandler(ch) logger.debug('debug') logger.info('info') logger.warning('warning') logger.error('error') logger.critical('critical')