博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python之路(五)--常用模块
阅读量:5937 次
发布时间:2019-06-19

本文共 11532 字,大约阅读时间需要 38 分钟。

python的常用模块

模块是为完成某一功能所需的一段程序或子程序。

模块的种类

  • 内置模块
  • 第三方模块
  • 自定义模块

模块的导入方法

  • import module_name

    导入指定的module_name模块,使用的话module_name.funcname(),如果有嵌套(import 文件夹名.module_name)的也需要写全,文件夹.module_name.funcname这样

  • form module_name import funcname

    导入指定的module_name模块中的funcname,不需要加模块名,直接用函数就可以,如果有嵌套(form 文件夹名 import module_name),可以不加文件夹名,module_name.funcname,也可以使用as取一个别名

  • form module_name import *

    "*"" 表示,该模块的所有公共对象都被导入到 当前的名称空间,也就是任何导入所有不是以”_”开始的。

模块中常用的全局变量

  • __name__:如果为主文件,那些__name__等于 __main__,否则等于模块名
  • __file__:当前文件的路径
  • __doc__:获取当前文件的注释
  • __package:如果是当前文件为None,导入其他文件,指定文件所在的包,用 . 分隔

sys模块

sys模块是用来获取操作系统和编译器的一些配置,设置及操作

1 sys.argv           获取命令行参数,第一个元素是程序本身路径 2 sys.exit(n)        退出程序,返回n,正常退出的话返回0 3 sys.version        获取Python解释程序的版本信息 4 sys.path           返回模块的搜索路径 5 sys.platform       返回操作系统平台名称(window为win32,linux为linux2) 6 sys.stdin          输入相关 7 sys.stdout         输出相关 8     stdout 是一个类文件对象;调用它的 write 函数可以打印出你给定的任何字符串,与print 9     不同的是,print会换行,为sys.stdout.write输出的不会换行,例如:
      
进度条的显示
1 import sys,time2 for i in range(100):3     sys.stdout.write("\r")4     sys.stdout.write("%s%% | %s"%(int(i),int(i)*"*"))5     sys.stdout.flush()6     time.sleep(0.1)
10 sys.stderror       错误相关

 

 

time模块

 在python中通常有这几种方式来表示时间:

  • 时间戳(timestamp)

    通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,即time.time()

  • 格式化的时间字符串 

    xxxx-xx-xx xx:xx,即:time.strftime()

  • 元组(struct_time)

     返回struct_time的函数主要有gmtime(),localtime(),strptime()。下面列出这种方式元组中的几个元素:

  属性(Attribute) 值(Values)
  tm_year(年) 比如2018
  tm_mon(月) 1 - 12
  tm_mday(日) 1 - 31
  tm_hour(时) 0 - 23
  tm_min(分) 0 - 59
  tm_sec(秒) 0 - 61
  tm_wday(weekday) 0 - 6(0表示周日)
  tm_yday(一年中的第几天) 1 - 366
  tm_isdst(是否是夏令时) 默认为-1
1 time.time():返回当前时间的时间戳。 2 time.localtime([st]):将一个时间戳转换为当前时区的struct_time。参数未提供,则以当前时间为准 3 time.gmtime([st]):和localtime()方法类似,将一个时间戳转换为UTC时区的struct_time。 4     UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8 5 time.mktime([st])将一个struct_time转化为时间戳。 6 time.ctime:把一个时间戳转化为time.asctime()的形式。如果参数未给或者为None,会默认time.time()为参数 7 time.asctime(st_time):把一个表示时间的元组或者struct_time表示为这种形式:Mon Feb 26 20:48:16 2018。如果没有参数,将会将time.localtime()作为参数传入。 8 time.strftime(format,st)把一个代表时间的元组或者struct_time转化为格式化的时间字符串。如果st未指定,将传入time.localtime()。   如果元组中任何一个元素越界,ValueError的错误将会被抛出。例如:     print(time.strftime("%Y-%m-%d %X", time.localtime()))#输出为2018-02-26 20:50:4710 time.strptime(string[, format]):把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。

 

%a 本地(locale)简化星期名称  %A 本地完整星期名称  %b 本地简化月份名称  %B 本地完整月份名称  %c 本地相应的日期和时间表示  %d 一个月中的第几天(01 - 31)  %H 一天中的第几个小时(24小时制,00 - 23)  %I 第几个小时(12小时制,01 - 12)  %j 一年中的第几天(001 - 366)  %m 月份(01 - 12)  %M 分钟数(00 - 59)  %p 本地am或者pm的相应符 一 %S 秒(01 - 61) 二 %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 三 %w 一个星期中的第几天(0 - 6,0是星期天) 三 %W 和%U基本相同,不同的是%W以星期一为一个星期的开始。  %x 本地相应日期  %X 本地相应时间  %y 去掉世纪的年份(00 - 99)  %Y 完整的年份  %Z 时区的名字(如果不存在为空字符)  %% ‘%'字符
字符串格式化占位符

 

转换关系:

datetime模块

datetime是基于time模块封装的,里面有几个类:datetime、date、time、timedelta、datetime_CAPI、tzinf

常用用法:

print(datetime.datetime.now()) #获取当前时间,输出格式:2018-02-26 21:18:49.104680print(datetime.date.today()) #返回当前日期,输出格式:2018-02-26print(datetime.datetime.utcnow())#获取UTC时间,格式:2018-02-26 13:20:54.444105print(datetime.date.fromtimestamp(time.time()))#根据给定的时间戮,返回一个date对象
View Code

 

os模块

os模块提供了多数操作系统的功能接口函数.对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作。比如说:绝对路径,父目录。当os模块被导入后,它会自适应于不同的操作系统平台

1 os.sep                             可以取代操作系统特定的路径分隔符。windows下为 “\\”,Linux下为"/" 2 os.linesep                         当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。 3 os.pathsep                         输出用于分割文件路径的字符串,系统使用此字符来分割搜索路径,例如POSIX上':',Windows上的';' 4 os.getcwd()                        获取当前工作目录 5 os.chdir("dirname")                改变当前脚本工作目录;相当于shell下cd 6 os.curdir                          返回当前目录: ('.') 7 os.pardir                          获取当前目录的父目录字符串名:('..') 8 os.mkdir('dirname')                生成单级目录;相当于shell中mkdir dirname 9 os.makedirs('dirname1/dirname2')   可生成多层递归目录10 os.remove(file)                    删除一个文件11 os.removedirs('dirname1')          若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推12 os.rmdir('dirname')                删除单级空目录,若目录不为空报错;相当于shell中rmdir dirname13 os.listdir('dirname')              列举目录下的所有文件,并以列表方式打印14 os.rename("oldname","new")         重命名文件/目录15 os.replace(src,dest)               重命名文件/目录,如果dest表示的是文件,存在则覆盖原来的文件,不报错;若是目录,存在则会报错16 os.stat('path/filename')           获取文件/目录信息,相当于C语言中stat函数17 os.name                            字符串指示当前使用平台。win下为'nt'; Linux下为'posix'18 os.getenv()                        获取一个环境变量,如果没有返回none19 os.putenv(key, value)              设置一个环境变量值20 os.environ[]                       获取环境变量的值21 os.system(command)                 用来运行shell命令。22 os.popen("bash command")           运行shell命令,生成对象,可赋给变量,再用read读取23 os.path.abspath(path)              返回path的绝对路径。24 os.path.split(path)                将path分割成目录和文件名,以元组返回25 os.path.dirname(path)              返回path中的目录,结果不包含'\'26 os.path.basename(path)             返回path最后的文件名,如果path以/或\结尾,那么就会返回空值27 os.path.exists(path)               判断path是否为存在,存在为True,不存在为False28 os.path.join(path1,path2,...)      将path进行组合,若其中有绝对路径,则之前的path将被删除29 os.path.isabs(path)                判断path是否为绝对路径,是返回True,否返回False30 os.path.isfile(path)               如果path是一个存在的文件,返回True。否则返回False31 os.path.isdir(path)                如果path是一个存在的目录,则返回True。否则返回False32 os.path.getmtime(path)             文件或文件夹的最后修改时间33 os.path.getatime(path)             文件或文件夹的最后访问时间34 os.path.getctime(path)             文件或文件夹的创建时间

 

path=os.path.abspath(os.curdir)#H:\python编程\newprint(os.path.split(path))print(os.path.split("."))#('H:\\python编程', 'new')#('', '.')‘print(os.path.dirname(path))#H:\python编程print(os.path.basename(path))#newprint(os.path.join("H:\\python编程", "new"))print(os.path.join("H:\\python编程\\new","H:\\python编程\\new_dir"))#H:\python编程\new#H:\python编程\new_dirprint(os.path.isabs(path))print(os.path.isfile(path))print(os.path.getatime(path))print(os.path.getctime(path))print(os.path.getmtime(path))#1519656857.1664195#1517967877.2101693#1519656857.1664195
View Code

 

re模块

re模块提供了正则表达式相关操作,通过这个接口,python可以使用正则表达式

特殊意义的字符

  • . ::匹配除换行符以外的任意字符
  • * : 匹配前面的字符0次或多次
  • +: 匹配前面的字符1次或多次
  • ?: 匹配前面的字符0次或1次
  • *?,+?,??:'*''+''?'限定符是贪婪的; 它们匹配尽可能多的文本。有时这个行为不是想要的,在限定符之后加上'?'将使得匹配以非贪婪的最小的方式进行;因为它将匹配尽可能的字符
  • {}:固定重复次数
    • {m}:重复m次
    • {m,n}:重复m到n次
    • {m,}:重复m次以上
  • ():作为一个组
  • []:用来表示一个字符集合
  • ^ :匹配字符串的开始,但是在字符集中有另一种用法:[^xxx]表示除了xxx以外的
  • $ :匹配字符串的结尾
  • \ :转义
    •  \ + 元字符:去点元字符特殊的功能
    •   \ + 普通字符:实现普通字符的特殊功能
      • \d :匹配任何的十进制数,相当于[0-9]
      • \D :匹配任何非数字字符,相当于[^0-9]
      • \s :匹配任何空白字符,相当于[\t\r\n\f\v]
      • \S :匹配任何非空白字符,相当于[^ \t\r\n\f\v]
      • \w :匹配任何字母数字字符,相当于[a-zA-Z0-9]
      • \W :匹配任何非字母数字字符,相当于[^a-zA-Z0-9]
      • \b :匹配一个单词的边界,也就是指单词和空格间的位置    
    •  \  + 数字:对应分组的功能,引用序号对应字组所匹配的

  对于\这个字符,如果我们想匹配一个普通的\字符的话,就需要写成"\\\\"这样子,这是因为python解释器将“\\”解释为一个\,而正则表达式也需要将"\\"解释为一个\,还有一种简便的写法是r“\\”,在前面加一个r即可,向python解释说这就是一个普通的字符串,然后正则表达式就可以匹配一个\,即将"\\"就可以匹配一个普通的\字符

  • | :或
  • (?P<name>..):添加一个字典对象到re.groupdict()中
  • match

 

  从起始位置开始匹配,匹配成功返回一个MatchObject对象,未匹配成功返回None

  re.match(pattern, string, flags=0)
  pattern:正则表达式模型
  string  : 要匹配的字符串
  flags   : 用于修改正则表达式的匹配模式
      • re.I :使匹配对大小写不敏感
      • re.L:做本地化识别匹配
      • re.M:多行匹配,影响^和$
      • re.S:是.匹配包括多行在内的所有字符        

 

match
1 import re 2 str_list="1abc2dfhdg2abc3rethgt3abc324" 3 r=re.match("(?P
\dabc\d)+",str_list) 4 print(type(r)) 5 print(r.group()) # 获取匹配到的所有结果 6 print(r.groups()) # 获取模型中匹配到的分组结果 7 print(r.groupdict()) # 获取模型中匹配到的分组结果 8 print(re.match("2abc",str_list)) 9 10 #######输出#########11
12 1abc213 ('1abc2',)14 {
'python': '1abc2'}15 None

 

扫描字符串,寻找的第一个由该正则表达式模式产生匹配的位置,并返回相应的MatchObject对象,没有的话返回None

  re.search(pattern, string, flags=0),和match一样,区别就是search,扫描整个字符串去匹配第一个,而match只是从开头开始匹配

search
str_list="abc2dfhdg2abc3rethgt3abc324"r=re.search("(?P
\dabc\d)+",str_list)print(r.group()) # 获取匹配到的所有结果print(r.groups()) # 获取模型中匹配到的分组结果print(r.groupdict()) # 获取模型中匹配到的分组结果#####输出########2abc3('2abc3',){
'python': '2abc3'}

 

  • findall

获取所有非重复的匹配列表;如果有一个组则以列表形式返回,且每一个匹配均是字符串;如果模型中有多个组,则以列表形式返回,且每一个匹配均是元祖;

  re.findall(pattern, string, flags=0),pattern,string,flags和match,search差不多,不同的是pattern可以使空,如果为空的话,会出现比string的个数还要多一个的空字符

findall
r=re.findall("(?P
\dabc\d)+",str_list)print(type(r))print(r)r=re.findall("","sdfds")print(r)#######输出########
['2abc3', '3abc3']['', '', '', '', '', '']

 

  • split

 将字符串拆分的模式的匹配项

  re.split(patternstringmaxsplit=0flags=0)  

    pattern: 正则表达式模型
    string : 要匹配的字符串
    maxsplit:分割个数
    flags  : 匹配模式

  

1 str_list="abc2dfhdg2abc3rethgt3abc324"2 print(re.split("\dabc\d",str_list)) #无分组3 print(re.split("(\dabc\d)",str_list)) #有分组4 5 ######输出#######6 ['abc2dfhdg', 'rethgt', '24']7 ['abc2dfhdg', '2abc3', 'rethgt', '3abc3', '24']
split

 

 

 

  • sub

替换匹配成功的指定位置字符串

  re.sub(patternreplstringcount=0flags=0)

    pattern: 正则表达式模型
    
repl   : 要替换的字符串或可执行对象
    string : 要匹配的字符串
    count  : 匹配个数
    flags  : 匹配模式
 
1 str_list="abc2dfhdg2abc3rethgt3abc324"2 print(re.sub("\dabc\d","*linux*",str_list))3 4 #########输出########5 abc2dfhdg*linux*rethgt*linux*24
sub

 

  • subn

  和sub一样,执行相同的操作,但返回一个元组,同时返回替换字符串的个数

  re.subn(patternreplstringcount=0flags=0)

1 str_list="abc2dfhdg2abc3rethgt3abc324"2 print(re.subn("\dabc\d","*linux*",str_list))3 4 ##########输出##########5 ('abc2dfhdg*linux*rethgt*linux*24', 2)
subn

 

hashlib模块

hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

1 import hashlib 2  3 def register(username,passwd): 4     with open("data.txt",'r+') as file: 5         for line in file: 6             line_list=line.split("||") 7             if line_list[0]==username: 8                 print("username is exist!") 9                 return10         Emd5=hashlib.md5(bytes("pythonlinux",encoding="utf-8")) #创建一个MD5对象11         Emd5.update(bytes(passwd,encoding="utf-8")) #对passwd进行加密12         Epasswd=Emd5.hexdigest() #获取加密后的字符串13         info="%s||%s\n"%(username,Epasswd)14         file.write(info)15 16 def login(username,passwd):17     Emd5 = hashlib.md5(bytes("pythonlinux", encoding="utf-8"))18     Emd5.update(bytes(passwd, encoding="utf-8"))19     Epasswd = Emd5.hexdigest()20     with open("data.txt","r+") as file:21         for line in file:22             line_list=line.strip().split("||")23             if line_list[0]==username and line_list[1]==Epasswd:24                 print("login success")25                 return26 register("python","123")27 login("python","123")28 29 #############30 其他的算法的用法和md5一样
注册,登录

 

pickle模块

用于python特有的类型 和 python基本数据类型间进行转换

    pickle中的函数dumps、dump、loads、load

    •      loads:直接从bytes对象中读取序列化的信息,而非从文件中读取。
    •         load:将序列化的对象从文件file中读取出来
    •        dumps:将数据转变为只有python认识的字符串
    •        dump:将数据转变为只有python认识的字符串,并写入文件中
import pickles=[11,22,33,44,55]str_dict='{"dict":"list","k1":"1"}'st=pickle.dumps(str_dict)print(type(st),st)li=pickle.loads(st)print(type(li),li)#########输出#########
b'\x80\x03X\x18\x00\x00\x00{"dict":"list","k1":"1"}q\x00.'
{
"dict":"list","k1":"1"}
pickle

 

json模块

用于字符串和 python基本数据类型间进行转换,与pickle不同的是,json可以与不同的语言进行交互

  json中的函数dumps、dump、loads、load

    •    loads:用于将列表,元祖,字典形式的字符串转变为真的的列表,元祖,字典。注意:列表,字典,元祖形式的字符串如果里面的元素是字符串的话,必须要用双引号""括起来,否则报错
    •       load:打开文件,并将列表,元祖,字典形式的字符串转变为真的的列表,元祖,字典,
    •     dumps:将数据转变为所有语言都认识的字符串
    •       dump:将数据转变为所有语言都认识的字符串,并写入文件中

 

import jsonstring="[11,22,33,44,55]"str_dict='{"dict":"list","k1":"1"}'#str_dict="{'dict':'list','k1':'1'}" 这个出错li=json.loads(str_dict)print(type(li),li)st=json.dumps(li)print(type(st),st)########输出########
{
'dict': 'list', 'k1': '1'}
{
"dict": "list", "k1": "1"}
json

 

转载于:https://www.cnblogs.com/chaguang/p/8475457.html

你可能感兴趣的文章
linux 笔记本的温度提示
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
广平县北方计算机第一届PS设计大赛
查看>>
深入理解Java的接口和抽象类
查看>>
java与xml
查看>>
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
基于事件驱动的DDD领域驱动设计框架分享(附源代码)
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
度量时间差
查看>>
apache prefork模式优化错误
查看>>
jmeter高级用法例子,如何扩展自定义函数
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
JS页面刷新保持数据不丢失
查看>>
清橙A1202&Bzoj2201:彩色圆环
查看>>