当前位置:   article > 正文

引用常用模块

引用模块的语句

一.时间模块(import time)

  时间戳时间(timestrap):print(time.time())

  结构化时间(struct_time):print(time.localtime())

  字符串时间(flomat string):print(time.strftime("%Y-%m-%d %H:%M:%S"))

二.random模块(import random)

  取随机整数

  print(random.randint(n,m))     # 在括号内随机抽取一个元素

  print(random.randrange(n,m))     # 在括号内取n到m范围随机的一个元素,顾头不顾尾

  print(random.randrange(a,b,c))   # 在括号内取n到m范围随机的一个元素,顾头不顾尾,c为步长

  随机抽取

  print(random.choice(l)) 取括号内数据类型随机元素

  print(random.sample(l,n))取括号内数据类型随机元素,n可以改变一次取的个数

  取随机小数

  print(random.random())      # 默认0-1之间的小数 

  print(random.uniform(n,m)) # 随机n-m之间的小数

  打乱顺序

  random.shuffle(l)打乱括号内数据类型的顺序

三.os模块(import os)   os模块是与操作系统交互的一个接口

  文件和文件夹相关

    os.remove()删除一个文件

    os.rename('oldname','newname')   重命名文件/目录

    os.mkdir('tmp')生成单击目录

    os.rmdir('tmp')删除单击空目录,若目录不为空则无法删除,报错

    os.makedirs('dir1/dir2/dir3')生成多层递归目录

    os.removedirs('dir1/dir2/dir3')若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

    os.listdir('path')列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

       os.stat(r'path')获取文件/目录信息   

st_mode: inode 保护模式
st_ino: inode 节点号。
st_dev: inode 驻留的设备。
st_nlink: inode 的链接数。
st_uid: 所有者的用户ID。
st_gid: 所有者的组ID。
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
st_atime: 上次访问的时间。
st_mtime: 最后一次修改的时间。
st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。

   os.system("bash command") 运行shell命令,直接显示
   os.popen("bash command).read() 运行shell命令,获取执行结果
   os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
   os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd

  os.path(路径相关)

  os.path.abspath(path) 返回path规范化的绝对路径

  os.path.split(path) 将path分割成目录和文件名二元组返回

  os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素

  os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素

  os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False

  os.path.isabs(path) 如果path是绝对路径,返回True

  os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False

  os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False

  os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

  os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间

  os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间#

  os.path.getsize(path) 返回path的大小

四.sys模块(import sys)  sys模块是与python解释器交互的一个接口

  print(sys.version)   # python解释器版本信息

  print(sys.platform)  # 系统信息

  sys.exit()  # exit(0)程序正常退出 exit(1)程序异常

  print(sys.path)  # 安装python的时候 选择路径 一个模块能不能被找到,主要是看这个模块文件所在的路径 在不在sys.path中

  print(sys.argv)

  一个文件在命令行被执行的时候

  python这句话后面所有的内容都会成为sys.argv中的一项

五.正则与re模块(import re)  

正则表达式(匹配字符串内容的一种规则)  

应用场景:匹配字符串的规则和从大段的字符串

    字符串:用户输入/文件读取/网络传输

    表单验证:注册页面

    爬虫

字符组:

  [0123456789]与[0-9]  匹配0-9阿拉伯数字,其他的字母,字符不符合

  [a-z]或[A-Z]      分别匹配a-z和A-Z字母

  [0-9a-zA-Z]      可匹配数字大小写字母

元字符:

  \w    匹配数字字母下划线

  \t      制表符

  \n    换行符

  \s    空白符(包含 空格 制表符和换行符)

  \d    数字

  \b         字母的两端

  \W         非数字字母下划线

  \S         非空白符

  \D         非数字

  .          换行符之外的任意字符

  ^          开始符

  $          结束符

  ^多个字符$ 匹配相对应多个字符数量

  a|b          或(匹配字符a或b) 如果是有包含关系的,长的放左边

  [...]         匹配字符组中的字符 具体的范围

  [^...]     非字符组

  ()         匹配括号内的表达式,也表示一个组         www\.(baidu|google)\.com

量词

  {n}重复n次

  {n,}至少n次

  {n,m}至少n次,至多m次

  ?   匹配0次或1次

  +   匹配1次或多次

  *   匹配0次或多次

组合:

  .^$


 

  *+?{}  正则默认贪婪匹配(尽可能多的匹配),但是后面加?号就会变成惰性匹配(尽可能少)

 

  .*?x  ("."如果是第一个元素,那么它一定会从第一个元素开始取,知道遇到x)

几种惰性匹配:

  *? 重复任意次,但尽可能少重复
  +? 重复1次或更多次,但尽可能少重复
  ?? 重复0次或1次,但尽可能少重复
  {n,m}? 重复n到m次,但尽可能少重复
  {n,}? 重复n次以上,但尽可能少重复
  .*?取尽量少的任意字符

转义符 :

  如果在测试工具中测试正常的代码拿到python中,由于转义符的问题搞不定,那么就直接在字符串外面+r

  print('\\\\n')

  print('\\n')

  print(r'\\n')

  print(r'\n')

 

re模块的常用方法:

findall

 

import re

ret = re.findall("e","sleep welkin alen")
print(ret)  #['e', 'e', 'e', 'e']   返回所有满足匹配条件的结果,放在列表里

#findall优先级查询
ret = re.findall("a.*?c","abbbcbbbabcccabbc")
print(ret)      #找所有,返回列表,(优先显示分组中的内容)
结果:
['abbbc', 'abc', 'abbc']

ret = re.findall("www.(yahoo|google).com","www.google.com")
print(ret)    #['google']    findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可
ret = re.findall("www.(?:yahoo|google).com","www.google.com")
print(ret)    #['www.google.com']

seach与group

ret = re.search("e","sleep welkin alen").group()
print(ret)  #e
#函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以
#通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。

ret = re.search("a.*?c","abbbcbbbabcccabbc").group()
print(ret)  #找第一个,返回变量,通过group取值,(通过group(组的序号)来获取组中内容)
结果:
abbbc

 ret = re.search('a(.*?)c','abbbccccabcabbcabbcc')
 print(ret.group(1))

 结果:

  bbb

match

ret = re.match('a(.*?)c','abbbccccabcabbcabbcc')
print(ret.group())  #abbbc  在正则表达式的前面加上^,其他的都和search相同

 split

ret = re.split('a.*?c','abbbccccabcabbcabbcc')
print(ret)  #['', 'ccc', '', '', 'c']  根据正则做字符串的切割,如果有分组,会保留分组中的内容

split优先级查询:

import re
ret = re.split("\d+","sleep6welkin8alen")
print(ret)  #['sleep', 'welkin', 'alen']
ret = re.split("(\d+)","sleep6welkin8alen")
print(ret)  #['sleep', '6', 'welkin', '8', 'alen']
#在匹配部分加上()之后所切出的结果是不同的,
#没有()的没有保留所匹配的项,但是有()的却能够保留了匹配的项,
#这个在某些需要保留匹配部分的使用过程是非常重要的

ret = re.split("[ab]","abcd")
print(ret)  #['', '', 'cd']     先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割

sub和subn

ret = re.sub('(a.*?)c','|','abbbccccabcabbcabbcc',1)
print(ret)  #|cccabcabbcabbcc  #将正则替换成'|',参数1表示只替换1个
ret = re.subn('(a.*?)c','|','abbbccccabcabbcabbcc')
print(ret)  #('|ccc|||c', 4)     ##将正则替换成'|',返回替换次数

compile

ret = re.compile('a.*?c')    #事先声明使用正则表达式,下面即可不用添加声明
res1 = ret.findall('abbbccccabcabbcabbcc') 
print(res1)
res2 = ret.search('abbbccccabcabbcabbcc')  
print(res2.group())

finditer

# finditer   返回一个迭代器,所有的结果要通过迭代才能取到,节省内存
ret = re.finditer('a.*?c','abbbccccabcabbcabbcc')
for i in ret:
    print(i.group())
结果:
abbbc
abc
abbc
abbc

 

序列化模块:将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化

 

 

用于序列化的两个模块

json,用于字符串 和 python数据类型间进行转换
pickle,用于python特有的类型 和 python的数据类型间进行转换

pickle模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化)

json:

  方法:dumps、loads

import json
dic = {'k1':'v1','k2':'v2','k3':'v3'}
str_dic = json.dumps(dic)  #序列化:将一个字典转换成一个字符串
print(type(str_dic),str_dic)  #<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"}
#注意,json转换完的字符串类型的字典中的字符串是由""表示的

dic2 = json.loads(str_dic)  #反序列化:将一个字符串格式的字典转换成一个字典
#注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示
print(type(dic2),dic2)  #<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
#也可以处理嵌套的数据类型
list_dic = [2,['a','b','c'],8,{'k1':'v1','k2':'v2'}]
str_dic = json.dumps(list_dic)
print(type(str_dic),str_dic)
list_dic2 = json.loads(str_dic)
print(type(list_dic2),list_dic)

结果:
<class 'str'> [2, ["a", "b", "c"], 8, {"k1": "v1", "k2": "v2"}]
<class 'list'> [2, ['a', 'b', 'c'], 8, {'k1': 'v1', 'k2': 'v2'}]

  方法:dump、load

import json
f = open('json_file','w')
dic = {'k1':'v1','k2':'v2','k3':'v3'}
json.dump(dic,f)        #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
f.close()
print(type(dic),dic)

f = open('json_file')
dic2 = json.load(f)     ##load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
f.close()
print(type(dic2),dic)

pickle:

  dumps/ loads

 

import pickle
dic = {'k1':'v1','k2':'v2','k3':'v3'}
str_dic = pickle.dumps(dic)
print(str_dic)  #一串二进制内容

dic2 = pickle.loads(str_dic)
print(dic2)     #转化二进制数据为字典

 

  dump/load

 

import time
struct_time = time.localtime(1500000000)
print(struct_time)
f = open('pickle_file','wb')
pickle.dump(struct_time,f)
f.close()

f = open('pickle_file','rb')
struct_time2 = pickle.load(f)  #load方法接受一个文件句柄
print(struct_time2.tm_year)

 

序列化模块 :
  将基础数据类型存到文件中再读出来
  将基础数据类型通过网络传给其他程序,再由其他程序读取并使用
json
  优点 : 所有语言通用
  缺点 : 支持的数据类型少
  方法和用法:
  dump
    dump(dict/list,文件句柄) # 文件句柄一定是以写的形式打开的
  load
    dict/list = load(文件句柄) # 文件句柄一定是以读的形式打开的
  dumps
    str = dumps(基础数据类型)
  loads
    基础数据类型 = loads(str)


pickle
  优点 : 支持python中几乎所有数据类型
  load文件的时候,可以load多条数据,也可以dump多条数据
  缺点 : 只支持在python程序之间交换数据
  dump            (任意一个需要写到文件中的变量,文件句柄) # 文件句柄,wb/ab形式打开
  load(文件句柄)  文件句柄是以rb形式打开
    pickle 的dump可以dump多次,load可以load多次
  dumps
    bytes = dumps(基础数据类型)
  loads
    基础数据类型 = loads(bytes)

 

转载于:https://www.cnblogs.com/shmilyxue/p/9950664.html

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/786129
推荐阅读
相关标签
  

闽ICP备14008679号