python 常用模块
Posted 巽逸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 常用模块相关的知识,希望对你有一定的参考价值。
常用模块
http://www.cnblogs.com/alex3714/articles/5161349.html
##########模块############
import 调用模块
单独调用模块的某个函数
from time import sleep ##调用time模块的sleep函数(可以用,取多个)
sleep(1)
print(\'afsasdas\')
###改变模块内的函数名字
from time import sleep as stop ##将sleep改成stop
stop(1)
print(\'afsasdas\')
##获取文件的路径
print(__file__) ##结果C:/Users/Administrator/PycharmProjects/untitled3/test/import mode call
###获取文件目录的绝对路径(从相对路径一层一层找的)
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
##结果
C:\\Users\\Administrator\\PycharmProjects\\untitled3
###__name__变量在当前文件中为__main__在其他文件中调用就为所调用文件的文件名
print(__name__) ##结果__main__
time 模块(时间)
1.sleep #睡眠时间 time.sleep(1)
2.strftime ##类似shell中的date命令
time_format= \'%Y-%m-%d %X\'
print(time.strftime(time_format))
结果2017-12-21 17:53:35
**********
可以这么用 print(time.strftime(\'%Y--%m--%d %X\',time.localtime()))
结果 2017--12--25 21:23:05
3.time #计算时间(计算机诞生到现在的时间1970年)以秒为单位
print(time.time()) #结果 1514207184.7077286
4.localtime ##当前时间(结构化显示) print(time.localtime())
显示结果 time.struct_time(tm_year=2017, tm_mon=12, tm_mday=25, tm_hour=21, tm_min=13, tm_sec=7, tm_wday=0, tm_yday=359, tm_isdst=0)
5.strptime ##转换为格式化时间显示 print(time.strptime(\'2017--12--25 21:23:05\',\'%Y--%m--%d %X\'))
#结果 time.struct_time(tm_year=2017, tm_mon=12, tm_mday=25, tm_hour=21, tm_min=23, tm_sec=5, tm_wday=0, tm_yday=359, tm_isdst=-1)
6.ctime #显示当前时间 print(time.ctime()) #结果 Mon Dec 25 21:35:00 2017
7.mktime #以秒的格式显示当前时间 print(time.mktime(time.localtime()))
结果# 1514209097.0
print(time.time()) #1514209097.3601263
print(time.mktime(time.localtime()))#1514209097.0
#####datetime模块(时间)
1.datetime.now ##显示时间 print(datetime.datetime.now())
#结果 2017-12-25 21:41:53.292476
random(随机数模块)
1.randint ##生成自定义的随机数(包括尾数) print(random.randint(1,10)) #生成1-10的随机数
2.random #生成大于0小于1的16位的随机数 print(random.random()) #结果 0.9182025488823987
3.choice #在一个序列中随机打印一个内容 print(random.choice([\'q\',\'w\',\'e\']))或者print(random.choice(\'hello\'))
4.sample #在一个序列中随机选择n个内容print(random.sample([1,3,6,7],2))
#结果 [3, 1]
5.randrange #自定义范围选择随机数(顾头不顾尾)print(random.randrange(1,3))##1到2的随机数(不包括3)
os(操作系统模块)
1.getcwd ##获取当前文件的工作目录(目录)print(os.getcwd()) ##结果C:\\Users\\Administrator\\PycharmProjects\\untitled3\\test
2.chdir ##改变当前文件或脚本的工作目录
print(os.getcwd())
os.chdir(r\'C:\\Users\') ###改变工作目录
print(os.getcwd())
结果
C:\\Users\\Administrator\\PycharmProjects\\untitled3\\test
C:\\Users
3.curdir ##返回当前目录 类似cd .
print(os.getcwd())
print(os.curdir)
结果
C:\\Users
. #点
4.pardir ##返回上一级目录 类似cd .. print(os.pardir) ##结果..(2个点)
5.makedirs ##创建多个目录(默认当前目录)os.makedirs(\'a\\\\bb\')
6.removedirs ##删除多个空目录(非空不删除) os.removedirs(\'a\\\\bb\')
7.mkdir ##创建一个目录 os.mkdir(\'aaaa\')
8.rmdir ##删除一个目录 os.rmdir(\'aaaa\')
9.listdir ##把某个目录下的所有文件及目录以一个list的格式显示os.listdir(r\'\\Users\\Administrator\\PycharmProjects\\untitled3\')
10.remove ##删除一个文件(只能是文件)os.remove(\'v\')
11.rename ##改文件或目录的名字 os.rename(\'v1\',\'vvv1\')
12.stat ##显示文件或目录的详细信息(类似shell的stat)print(os.stat(r\'aa\\b\\qqq.py\'))(可以看文件大小)
#结果
os.stat_result(st_mode=33206, st_ino=2533274790532240, st_dev=701016, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1514293889, st_mtime=1514293889, st_ctime=1514293889)
13.sep ##获取当前操作系统路径分割符 linux=/ win=\\ print(os.sep)
14.linesep ##换行分隔符 win=\\r\\n linux=\\n mac=\\r
15.pathsep ##输出分割文件路径路径的分隔符 print(os.pathsep)
16.name #输出字符串指定当前使用平台 win=nt linux=posix print(os.name)
17.system ##运行shell命令 print(os.system(\'ping baidu.com\'))
18.environ ##获取系统环境变量(字典形式) print(os.environ)
19.path.abspath ##获取文件或目录的绝对路径 print(os.path.abspath(\'aa\'))
20.path.split##以元祖形式将文件分成(路径与文件名)根据最后一个斜杠分
print(os.path.split(r\'C:\\Users\\Administrator\\PycharmProjects\\untitled3\\test\\aa\'))
结果
(\'C:\\\\Users\\\\Administrator\\\\PycharmProjects\\\\untitled3\\\\test\', \'aa\')
21.path.dirname #获得目录或文件的母目录(上一个目录)的绝对路径
print(os.path.dirname(r\'C:\\Users\\Administrator\\PycharmProjects\\untitled3\\test\'))
结果
C:\\Users\\Administrator\\PycharmProjects\\untitled3
22.path.basename #获取目录或文件(分隔符最后一个文件或目录)
print(os.path.basename(r\'C:\\Users\\Administrator\\PycharmProjects\\untitled3\\test\'))
结果
test
23.path.exists ##判断文件存不存在 (存在True不存在False)print(os.path.exists(r\'C:\\Users\\Administrator\\PycharmProjects\\untitled3\\test\'))
24.path.isabs ##判断是否为绝对路径(是返回True不是返回False)print(os.path.isabs(\'test\'))
25.path.isfile ##判断是否为文件print(os.path.isfile(\'b\'))
26.path.isdir #判断是否为目录 print(os.path.isdir(\'../test\'))
27.path.join ##路径拼接 print(os.path.join(r\'C:\\Users\\Administrator\',\'b\'))
结果
C:\\Users\\Administrator\\b
28.path.getatime ##获取文件的最后存取时间 print(os.path.getatime(r\'C:\\Users\\Administrator\'))
结果
1513490467.9614303
29.path.getmtime #获取文件的最后修改时间print(os.path.getmtime(r\'C:\\Users\\Administrator\'))
结果
1513490467.9614303
sys(python解释器模块)
1.argv ##以列表的形式进行传参(第一个是文件绝对路径与文件名)
2.exit ##退出程序exit(0)为正常
3.path ##搜寻模块路径(以列表形式显示) print(sys.path)
4.platform ##返回操作系统名称 print(sys.platform)
hashlib(加密模块)
1.md5 ##加密
a=hashlib.md5("hello".encode(\'utf8\')) ##加密hello (需要对字符编码)
print(a.hexdigest()) ##hexdigest(以16进制进行返回)#结果5d41402abc4b2a76b9719d911017c592
2.sha(1-512) ##1到512都是加密算法 常用sha3_256 解密显示也用hexdigest
logging(日志模块)
http://www.cnblogs.com/yuanchenqi/articles/5732581.html
默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET),默认的日志格式为日志级别:Logger名称:用户输出消息。
一、简单使用
import logging
logging.debug(\'debug message\')
logging.info(\'info message\')
logging.warning(\'warning message\') ##打印
logging.error(\'error message\') ##打印
logging.critical(\'critical message\') ##打印
二 灵活配置日志级别,日志格式,输出位置
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=\'/tmp/test.log\',
filemode=\'w\')
logging.debug(\'debug message\')
logging.info(\'info message\')
logging.warning(\'warning message\')
logging.error(\'error message\')
logging.critical(\'critical message\')
filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。
filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
format:指定handler使用的日志显示格式。
datefmt:指定日期时间格式。
level:设置rootlogger(后边会讲解具体概念)的日志级别
stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open(\'test.log\',\'w\')),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。
##########
format参数中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s用户输出的消息
configparser(配置文件模块)
http://www.cnblogs.com/alex3714/articles/5161349.html
1.ConfigParser
import configparser
config=configparser.ConfigParser()
config["DEBUG"]={
\'name\':\'zhangbin\',
\'age\':\'23\',
\'max\':\'male\'
}
with open(\'example.ini\', \'w\') as configfile:
config.write(configfile)
##结果
[DEBUG]
name = zhangbin
age = 23
max = male
#####对配置文件的操作 http://www.cnblogs.com/alex3714/articles/5161349.html
一、读
1.sections ##以list查看所有块 print(config.sections())
2.defaults ##以list查看(默认【第一个块】)块内的配置 print(config.defaults())
print(\'bitbucket.org\' in config) ##判断
print(config[\'bitbucket.org\'][\'user\']) ##查看user的值
二、增、删、改
##删
config.remove_section(\'topsecret.server.com\') ##删除‘topsecret.server.com’块
config.write(open(\'a.ini\',\'w\')) ##在创建文件(原文件中的内容无法改变)
config.remove_option(\'bitbucket.org\',\'user\') ##删除\'bitbucket.org\'块下的\'user\'键值
config.write(open(\'a.ini\',\'w\')) ##重新写入文件
##改
config.set(\'bitbucket.org\',\'user\',\'zhangbin\') ##把\'bitbucket.org\'块中的‘user’改为‘zhangbin’
config.write(open(\'a.ini\',\'w\')) ##重新写入文件
re(正则模块)
1.findall ##查找所有 print(re.findall(\'w..l\',\'hello world\'))
. (点) ##任意一个字符
^ (尖角号)以什么开头
$ 以什么结尾
* 重复 一般用(.*)进行匹配
+ 前面一个字符最少出现一次
? 前面么一个字符最多出现一次可以没有
{} 定义前面一个字符出现多少次 print(re.findall(\'a{1,6}b\',\'asdaaaab\')) ##匹配1到6个a(最少1个最多6个a)到b [默认取最多的]
\\ (反斜杠) 去除元字符的特殊意义,加普通字符实现特殊意义
() 表示一个整体
| 或
[a-z] 小a到z
[^a-z] 排除a-z
2.search ##同findall但只取第一个并且拿到的是位置需要group才能查看内容 print(re.search(\'aa\',\'aaqffadaa\').group())
##进阶运用方法
ret=re.search(\'(?P<id>\\d{3})/(?P<name>\\d{3})\',\'assad123/456\')
print(ret.group()) 结果 123/456
print(ret.group(\'id\')) 结果 123
3.match #只在字符串开头匹配(返回一个值)用gourp方法查看值print(re.match(\'d\',\'dd\').group())
4.split ##以什么为分割(分成list)print(re.split(\'d|f\',\'dafqgweef\'))
5.sub ##替换 print(re.sub(\'a.*g\',\'AAAAAA\',\'dafagegrgvdssad\')) #结果dAAAAAAvdssad6.compile ##重复调用定义的正则匹配
ojb=re.compile(\'\\.com\')
print(ojb.findall(\'baidu.com dasasd\'))
json(序列化模块)(可以和其他语句沟通)
1.dumps ##json的方法存放数据
import json
dic={"name":\'zhangbin\',"age":"23"}
f=open(\'json_write\',\'w\')
data=json.dumps(dic)
f.write(data)
###文件内容
{"name": "zhangbin", "age": "23"}
2.loads ##解开json的存储方法
import json
f=open(\'json_write\',\'r\')
fw=f.read()
d=json.loads(fw)
print(d[\'name\'])
##结果
zhangbin
pickle (python中的序列化模块)用法和json一样但在python中支持跟多的数据类型
1.dumps
2.loads
以上是关于python 常用模块的主要内容,如果未能解决你的问题,请参考以下文章