Python常用模块总结,附实例

(1)os模块

import os

f = open("d:/111/1.txt","w")  #如果目录不存在也是不能创建的


#(1)重命名文件,删除文件
try:
    os.remove("123.txt")    #删除文件,特别要注意,不要删错了
    os.rename("123.txt","456.txt")  #重命名
except Exception as e:
    print(e)

#(2)返回.py文件所在工作目录   不带\
path = os.getcwd()   #返回.py文件所在工作目录   不带\


#(3)  os.path模块

path = r"c:\demo\test\abc.txt"   #注意这里不加r会出错 ,带上r  \自动变成了\\

path1 = "c:\\demo\\test\\abc.txt"   #这样就需要两个斜线  因为字符串里面,右斜的是转义字符

#\r\n   换行符

path2 = "c:/demo/test/abc.txt"

path3 = "c:\111.txt"
path4 = 'c:\111.txt'

print(path3)  #打印出错了,因为他把\1  当成转义字符了
print(path4)  #单双引号,都会转义  这点跟php不一样

a = os.path.split(path)   #将目录和文件名分隔开来   文件名带后缀  保存到元祖里面
b = os.path.split(path1)
c = os.path.split(path2)

print(c[1])   #通过下标访问元祖

print(a,b,c)

d = os.path.splitext(path2)

print(d)    #返回   ('c:/demo/test/abc', '.txt')  带点的扩展名


d = os.path.dirname(path2)  #其实就是  文件路径   split分隔的第一部分
print(d)

d = os.path.basename(path2)   #其实就是  文件名   split分隔的第二部分
print(d)


e = os.path.abspath("456.txt")   #相对路径  求出绝对路径  
print(e)

print(os.path.getatime(e)) #返回最近访问时间 浮点型时间戳
print(os.path.getmtime(e)) #返回上一次修改时间 浮点型时间戳
print(os.path.getctime(e)) #返回文件创建时间 浮点型时间戳


print(os.path.exists(e))   #文件是否存在

print(os.path.isdir(e))     #是否是一个目录
print(os.path.isfile(e))     #是否是一个文件

print(os.path.join(e[0],e[1]))


#创建目录

try:
    os.mkdir("d:/111")  # 文件存在就无法创建了
except Exception as e:
    print(e)


print(os.path.expanduser("~"))   #Administrator的路径   这个是内置的?

print(os.path.join(os.path.expanduser("~"),"Desktop"))

(2)sys模块

import sys

a = sys.argv   #当前文件的绝对路径 a[0]
a = sys.path   #各种系统文件的目录

print(sys.version)   #这个是python的版本
print(sys.platform)   #返回操作系统平台名称   win32
print(sys.executable)   #Python解释程序路径
print(sys.modules.keys())   #显示系统导入的模块
print(sys.exc_info())   #获取当前正在处理的异常类
print(sys.copyright)   #获取当前正在处理的异常类


sys.exit(0)  #退出当前的程序

print(a)

(3)random模块

import random

a = random.random()   #产生0-1之间随机小数
a1 = random.uniform(1,10)    #产生m-n之间的随机小数
print(a,a1)


b = random.randint(1,2)   #全闭合的   [1,2]区间一个整数,不是列表  一般列表都是左闭右开
print(b)

---------------------------------------------------
print(list(range(0,10)))   #生成0-10   左闭右开的列表

************************为什么要左闭右开
抛开冗长的分析过程,总结一下,选择第一种表示法(左闭右开区间)有以下几个原因

1.上下界之差等于元素的数量
2.易于表示两个相邻子序列,一个子序列的上界就是另一个子序列的下界
3.序列从零(最小自然数)开始计数时,下界的下标不是 -1(非自然数)
4.表达空集时,不会使得上界小于下界
***********************************

a = range(0,11)   #a是一个range类型  要转化为list
print(type(a))

for i in range(0,11):
    if i == 5:
        continue    #5不会打印出来
    print(i)
---------------------------------------------------

c = random.choice("abcdefg")   #选择字符串里面随机一个字符
c1 = random.sample("abcdefghijk",3)   #产生一个3个字符的列表
c2 = ''.join(c1)   #这个意思是直接将列表c1拼接起来

e = ["te1","te2","te3"]
f = random.choice(e)   #列表则选择列表中的一个元素
print(f)


lst = ["1","2","3","4"]

random.shuffle(lst)   #shuffle   洗牌   重新排序   这个没有返回值
print(lst)

(4)math模块

import math

PI = math.pi

print(math.ceil(1.1))   #ceil  天花板   向上取整

print(math.floor(1.1))  #floor 地板   向下取整

print(math.pi)    #  π圆周率

print(math.sqrt(2))   #开平方

print(math.sin(PI/2))   #sin,cos,tan,这里的都是弧度

print(math.pow(2,4))     #返回  x的y次方  浮点数



保留多少位小数
from _pydecimal import Decimal,Context,ROUND_HALF_UP   #四舍五入
print(Context(prec=3, rounding=ROUND_HALF_UP).create_decimal('1.3255'))  #总共3位,保留2位

from decimal import Decimal

a = Decimal(1.325)
b = Decimal(1.32500000000000000000000000000000000001)
print(a==b)   #这个居然相等

(5)re模块

import re
'''
None是一个对象,而NULL是一个类型。
Python中没有NULL,只有None,None有自己的特殊类型NoneType。
None不等于0、任何空字符串、False等。
在Python中,None、False、0、""(空字符串)、[](空列表)、()(空元组)、{}(空字典)都相当于False。

'''
#---------------(1)re.match  必须是开头就得匹配,否则返回None
pattern = re.compile("([\w]+)\s([\w]+)!")

res = re.match(pattern,"!!!hello world! hello111!!!")   #match 必须是开头就得匹配,否则返回None

print(res)   #如果匹配返回  obj   不匹配返回None

if res:
    print(res.group(0,1,2))    #只匹配了第一次出现的  这是一个元祖
    # group(0)表示整个匹配结果的第一个(全额)匹配   group(1) 表示第一个小括号匹配  以此类推
else:
    print("Not Match")

#---------------(2)re.search   搜索到即可

pattern = re.compile("([\w]+)\s([\w]+)!")

res = re.search(pattern,"!!!hello world! hello111!!!")   #match 必须是开头就得匹配,否则返回None

print(res)   #如果匹配返回  obj   不匹配返回None

if res:
    print(res.group(0,1,2))    #只匹配了第一次出现的  这是一个元祖
    # group(0)表示整个匹配结果的第一个(全额)匹配   group(1) 表示第一个小括号匹配  以此类推
else:
    print("Not Match")


#---------------(3)re.findall   找到所有符合条件的
pattern = re.compile("([\w]+)\s+([\w]+)!+")   #注意[abc]只匹配一个字符哦!
#比如   [123abc]  匹配"abcde"   返回  a b c  3中匹配结果
#ab+  跟[ab]+  就不一样了    ab+只能匹配ab开头的   [ab]+可以匹配 aaabbb等

res = re.findall(pattern,"hello world! hello  world!!!!")   # 注意返回结果list 只匹配()里面的,这点跟易语言不同。

print(res)   #如果匹配返回返回一个列表  里面装的是元祖  不匹配返回一个空list

if res:

    for items in res:
        for i in items:
            print(i)
else:
    print("Not Match")


num = len(res)   #获取匹配的结果数
print(num)
#---------------(4)re.finditer   返回一个obj 迭代器   跟list不太一样  但也是搜索全部结果
pattern = re.compile("([\w]+)\s+([\w]+)!+")   #注意[abc]只匹配一个字符哦!

res = re.finditer(pattern,"hello world! hello  world!!")

print(res)

for m in res:
    print(m.group())

#---------------(5)re.sub    re.sub(pattern, repl, string[, count])
# 使用repl替换string中每一个匹配的子串后返回替换后的字符串。

pattern = re.compile("([\w]+)\s+([\w]+)(!+)")   #注意[abc]只匹配一个字符哦!

res = re.sub(pattern,r'\1\2ni yaya','hello world! heeello  world!!!',count=1)   #\1表示第一个匹配项目
#\2 表示第二个匹配项     count替换的次数  默认count 替换掉所有的

aaa = "nihai"

print(aaa.upper())


def func1(m):
    return m.group(1).title() + " " + m.group(2).upper()

res1 = re.sub(pattern,func1,'hello world! heeello  world!!!')   # 通过函数  进行模型替换,全部转化为大写
# 或者标题化 首字母大写

print(res1)

#比较一下  str.replace()

ss = "akakak"
ss = ss.replace('k','8')   #这个是有返回结果的   正则替换比这个字符串固定替换更加厉害

print(ss + "1111")



#---------------(6)re.subn    re.subn(pattern, repl, string[, count])

#多返回一个  替换的次数统计
pattern = re.compile("([\w]+)\s+([\w]+)(!+)")   #注意[abc]只匹配一个字符哦!

res = re.subn(pattern,r'\1\2ni yaya','hello world! heeello  world!!!')   #\1表示第一个匹配项目
#\2 表示第二个匹配项     count替换的次数  默认count 替换掉所有的

print(res)   #替换次数为2


# ---------------(7)re.split   re.split(pattern, string[, maxsplit])
#按照能够匹配的子串将string分割后返回列表。maxsplit用于指定最大分割次数,不指定将全部分割

pattern = re.compile(r"\d")

res = re.split(pattern,"one1two2three3for")  #按照数字分割成一个列表

print(res)

#---------比较一下   比str.split()  更加强大

ss = "a1b1c1d1"

print(ss.split("1"))
#但是   正则更厉害

pattern = re.compile("\d")

res = re.split(pattern,"a2b3c4d5")

print(res)    #['a', 'b', 'c', 'd', '']   最后多出一个''

(6)datetime,date,time模块

import datetime,time

a = datetime.date.today()   #返回日期
a = datetime.datetime.today()  #返回日期,时间精确到毫秒...

a = time.time()   #返回时间戳
a = time.localtime()   #

# a = time.gmtime()   #返回时间戳

print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()))   #gmt

print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))  #本地时间

(7)hashlib,md5加密模块

import hashlib

#md5str = hashlib.md5('jsphp.net'.encode(encoding='UTF-8')).hexdigest()

md5str = hashlib.md5("111".encode(encoding="UTF-8"))   #这是1个地址,保存了md5值
print(md5str)
md5str = md5str.hexdigest()  #转化为16进制
print(md5str)


sha1 = hashlib.sha1("222".encode(encoding="UTF-8")).hexdigest()

print(sha1)

(8)json模块

import json

a = '{"a":"hahahah","b":"sdjskdj"}'
b = {"d":"hahahah","b":"sdjskdj"}
c = [{"d":"hahahah","b":"sdjskdj"}]

print(a,b)

print(type(b),type(c))

print(json.dumps(b,sort_keys=True))    #dict转化为字符串,并排序   按照字段排序

print(json.dumps(c))    #list转化为字符串   dumps  转储


jsonData = '{"a":"hahahah","b":"sdjskdj"}'

print(json.loads(jsonData))    #将字符串  转化为dict

print(eval(jsonData))    #通过eval函数转化

猜你喜欢

转载自blog.csdn.net/sanbuxiaozhu/article/details/114989166
今日推荐