Python——关于常见模块(长期更新)

1、在Python中,我们最常见的估计就是时间模块,所以第一个我来说一下时间模块:

import time

print(time.time())    #时间戳,从1970年8点开始的

print(time.clock())  #计算cpu的执行时间

print(time.gmtime())   #UTC时间

print(time.localtime())    #北京时间

print(time.strftime('%Y-%m-%d %H:%M:%S'))   #创建时间格式

a = time.strptime('2018-11-12 21:41:32','%Y-%m-%d %H:%M:%S')

print(a.tm_year)   #2018   求上面变量a所给时间的年

print(time.ctime(1))    #如果括号为空,则显示当前时间,括号里面显示的为秒数,从1970年8点开始计算

print(time.mktime(time.localtime()))   #将时间戳转化为秒

关于上面所说的时间模块,那么我们有什么应用呢,在日常书写中,我们经常要给文件写时间与日期,这时候就可调用时间模块

#假设这样一个场景,如果有人打开秘密文本,则记录打开的时间,将其保存到文本中,如果打开的是公开文本,则不记录
import time

def sceret():
    
    print('秘密文本')
def text():
    print('公开文本')
    
def logger_one(f):
    def  logger_two():
        f()
        a = open('logger_sceret.txt','r+')
        a.read()
        a.write('\r\n')
        print(a.write(time.strftime('%Y-%m-%d %H:%M:%S')))
        a.close()
    return logger_two

sceret = logger_one(sceret)

sceret()

 

2、接下来说以下random(随机数)模块:

import random   #在Python中,如果我们要定义随机数模块

print(random.random())   #这是一个 0-1的随机数

print(random.randint(1,8))  #随机出现1——8,包含8

print(random.choice(['123',4,[1,2]]))     #随机出现列表里的一个

print(random.sample(['123',4,[1,2]],2))    #随机出现列表里的两个

print(random.randrange(1,3)) #,随机出现1——3,不包含3

上面我们说了一下随机数模块,那么随机数模块在哪里应用呢,在日常生活中,我们常接受到的短信验证码就可以用随机数来做

import random

def v_code():         #定义这个随机数函数
    code = ''           #首先定义将要给出的验证码为空
    for i in range(5): 
        add=random.choice([random.randrange(10),chr(random.randrange(97,123))])   #验证码为五位的小写字母和数字任意组合
        code+=str(add)      #每次出现的数字或字母拼接在一起
    print(code)          

v_code()           #调用,便可出现这个随机验证码

3、接下来我们来说一下关于os模块

import os

os.getcwd())     #获取当前工作目录

os.chdir('dirname'))   #改变当前脚本工作目录

os.curdir           #返回当前目录

os.pardir           #返回当前目录的父目字符串名录

os.makedirs('dirname1/dirname2')        #生成多递归目录

os.removedirs('dirname1')           #若目录为空,则删除,并递归到上一层目录,如也为空,则删除

os.mkdir('dirname')         #生成单级目录

os.rmdir('dirname')         #删除单级目录

os.listdir('dirname')       #列出当前目录下的所有文件和子目录

os.remove()         #删除一个文件

os.rename('oldname','newname')          #给文件重命名

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

#上面这个说一下,如果我们获取了文件信息,那么我们就要从信息中得到我们想要的
os.stat_result(st_mode=33206, st_ino=1688849860273573, st_dev=205036670, st_nlink=1, st_uid=0, st_gid=0, st_size=307, st_atime=1541679532, st_mtime=1541938638, st_ctime=1541679532)
#上面这些是我获取我自己的文件得到的信息,st_size表示文件为多少字节,st_atime表示文件最后存取时间,st_mtime表示最后修改时间

os.sep          #输出操作系统特定的路径分隔符

os.linesep          #输出当前平台使用的行终止符

os.pathsep          #输出用于分割文件路径的字符串

os.name         #输出字符串指示当前使用平台

os.system('bash command')       #运行shell命令

os.environ       #获取系统环境变量

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

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

os.path.dirname(path)       #返回path的目录

os.path.basename(path)      #返回path最后的文件名

os.path.exists(path)        #如果path存在,返回Ture,反之,返回False

os.path.isabs(path)     #判断path是否为绝对路径

os.path.isfile(path)        #判断path是否是一个存在的文件

os.path.isdir(path)         #判断path是否是一个存在的目录

os.path.join(path[,path2[,...]])        #

os.path.getatime(path)      #返回path所指向的文件或目录的最后存取时间

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

4、接下来说一说hashlib模块

#各种加密方式的调用方法
import hashlib

hashlib.blake2b

hashlib.blake2s            

hashlib.md5

hashlib.new            

hashlib.pbkdf2_hmac

hashlib.sha1      #还有如同sha256等等方法

将具体的某些东西进行加密

import hashlib   #所谓的加密模块

m = hashlib.md5()   #可以将后面的MD5改为blake2b,sha256等等的加密算法

print(m)

m.update('hello world'.encode('utf8'))
print(m.hexdigest())
m.update('Any'.encode('utf8'))

print(m.hexdigest())
m2 = hashlib.md5()
m2.update('hello worldAny'.encode('utf8'))  #因为在Python3中使用万国码进行转化,所以要转成utf8
print(m2.hexdigest())

b = hashlib.md5()
b.update('hello world Any'.encode('utf8'))
print(b.hexdigest())

5.关于sys模块

import sys       #与python解释器进行交互

print(sys.argv)    #命令行参数list,第一个元素是程序本身路径

print(sys.exit())   #退出程序,正常退出时exit(0)

sys.version    #获取python解释程序的版本信息

sys.maxint     #最大的int值

sys.path     #返回模块的搜索路径,初始化时使用pythonpath环境

sys.platform   #返回操作系统平台名称

6.关于re(所谓的正则表达式)模块

import re

re.findall("条件","所要查找的字符串","标志位")   一般不修改标志位

rer.search()   只找到一个就返回,取用方法为group

##2元字符

1、" . "  通配符 代指所有的字符(除了换行符\n),每次只能代指一位
ret1 = re.findall('h..o','hello world')
2、" ^ "  尖角符 只在最开始的地方匹配,后面不匹配
ret2 = re.findall('^h..o','adsahellosdf')
3、" $ "   只在最后的地方匹配,前面不匹配
ret3 = re.findall('h..o$','adsahellosdf')
4、" * "    重复前面的字符,然后进行匹配,匹配次数为零次到无穷
ret4 = re.findall('h.*o','adsahellosdf')
5、" + "   重复前面的字符,然后进行匹配,匹配次数为1到无穷
ret5 = re.findall('ab+','asdfab')
6、" ?"  只能取零次或一次
ret6 = re.findall('a?b','aaaabghabdfgb')
7、" {1,5} "   匹配几次可以自己定,默认按最大的匹配(贪婪匹配)
8、" [a,b]" 字符集(取代元字符的特殊功能[\ ^ (非)-(到)])    中括号里的任意选一个,但是不能两个都选
   尖叫号放在中括号里,意味中括号里取反
  [a-z]   a到z的范围都选
9、" \ "     反斜杠后边跟元字符去除特殊功能
            反斜杠后边跟普通字符实现特殊功能
10、" ( ) "
11、" | "   或的关系


findall()   :所有的结果都返回到一个列表里
search()    :返回匹配到的第一个对象(object),对象可以调用group(),返回结果
match():  只在字符串可是匹配,剩下与search一样
split():
sub():   等价于replace()  re.sub('\d','abc','alvin5yuan6',1)
subn():    会告诉你替换的次数
compile()  :
                obj = re.compile('\d{3}')
                     ret = obj.search('abc123eeee')
                     print(ret.group())
finditer():   生成的是一个迭代器

比如我们在日常的从网页上爬取的数据,我们要从中进行网址的选取,就可以使用这个模块

import re 

ret = re.findall('www.(?:\w+).com','www.baidu.com')

print(ret)

#我们进行的查询一般都是模糊匹配,而RE模块进行查询时,一般都是贪婪匹配,即按所要选取的最大的值取

7.关于XPath表达式模块

 

示例代码:

<?xml version="1.0" encoding="UTF-8"?>
 
<bookstore>
 
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
 
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
 
</bookstore>



所要提取的内容:


//price/text()            会取到29.99 和39.95这两个值
//title/@lang             提取title里面lang的属性值

 

posted @ 2018-11-15 19:11  Xa_L  阅读(58)  评论(0编辑  收藏  举报