python--常用模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python--常用模块相关的知识,希望对你有一定的参考价值。

一、模块、包

1.什么是模块
模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称。

2.什么是包
包,package本质就是一个文件夹,和文件夹不一样的是它有一个__init__.py文件,包是从逻辑上来组织模块的,也就是说它是用来存放模块的,如果你想导入其他目录下的模块,那么这个目录必须是一个包才可以导入。

导入模块

1.从当前目录下找需要导入的python文件
2.从python的环境变量中找

1 import os
2 from module import *  #导入该模块中的所有方法,慎用
3 from module import fun1,fun2,fun3 #导入模块下的多个方法
4 from day6.login_file.my_db import my_db #导入day6文件夹下login_file文件夹下my_db文件中的my_db函数

 

导入模块的本质,就是把python文件拿过来从头运行一遍

二、random模块

1 import random,string
2 print(random.randint(1,10))#随机取整数
3 print(random.uniform(1,99),2)#随机取2位小数
4 print(random.choice([1,2,3,4,5]))#只能随机取1个元素
5 print(random.sample(string.printable,5))#代表数字,字母和特殊字符
6 print(random.randint(1,1000))#随机产生一个1-1000的数字
7 print(1.zfill(4))#补0  生成4位数,不够在前面补0 ,前面‘‘中必须是字符串
1 #洗牌,打乱顺序
2 pickts =[A,J,Q,K,2,3,4,5,6]
3 random.shuffle(pickts)
4 print(pickts)

三、string模块

1 print(string.ascii_lowercase)#所有的小写字母
2 print(string.ascii_uppercase)#所有的大写字母
3 print(string.digits)#所有的数字
4 print(string.ascii_letters)#所有大写字母和小写字母
5 print(string.punctuation)#所有的特殊字符

四、time&datetime模块

time和datetime模块主要用于操作时间

时间有三种表示方式,一种是时间戳:从unix元年到现在过了多少秒;一种是格式化时间:例如2018-04-27;一种是时间元组

1 print(time.time())#获取当前时间戳
2 time.sleep(10)#停10秒
3 today = time.strftime(%Y-%m-%d %H:%M:%S)#获取格式化好的时间
4 print(time.gmtime())#默认取得是标准时区的时间
5 print(time.localtime())#取得是当前时区的时间
6 res = datetime.date.today() + datetime.timedelta(days=-5)#获取5天前的时间
7 print(res) 

时间戳转换格式化时间

1.先把时间戳转成时间元组,用time.localtime()方法
2.再把时间元组转成格式化时间

1 s =time.localtime(1524299387.2033713)
2 print(time.strftime(%Y-%m-%d %H:%M:%S,s))

打印结果就是:2018-04-21 16:29:47,转换成功!

将时间戳转换成格式化时间写成一个函数

 1 def timestamp_to_fomat(timestamp=None,format=%Y-%m-%d %H:%M:%S):
 2     #1.默认返回当前格式化好的时间
 3     #2.传入时间戳的话,把时间戳转成格式化好的时间,返回
 4     if timestamp:
 5         time_tulp = time.localtime(timestamp)
 6         res = time.strftime(%Y-%m-%d %H:%M:%S,time_tulp)
 7     else:
 8         res = time.strftime(format)#默认取当前时间
 9     return res
10 print(timestamp_to_fomat())
11 print(timestamp_to_fomat(197323242,%Y-%m-%d))

 

格式化时间转换时间戳

1.先把格式化好的时间转成时间元组
2.再把时间元祖转成时间戳

 

1 tp = time.strptime(2018-4-21,%Y-%m-%d)#先把格式化好的时间转成时间元组
2 print(tp)
3 print(time.mktime(tp))#再把时间元祖转成时间戳

 

打印结果就是:1524240000.0,转换成功!

将格式化时间转成时间戳写成一个函数

 1 def strToTimestamp(str=None,format=%Y%m%d%H%M%S):
 2     #2018 -04-21 16:56:43
 3     if str:#如果传了时间的话
 4         tp = time.strptime(str,format)#转成时间元组
 5         res = time.mktime(tp)#再转成时间戳
 6     else:
 7         res = time.time()#默认取当前的时间戳
 8     return int(res)
 9 print(strToTimestamp())
10 print(strToTimestamp(2018-11-29 18:38:59,%Y-%m-%d %H:%M:%S))


datetime

1 import datetime
2 print(datetime.datetime.today())#获取当前时间,精确到秒
3 print(datetime.date.today())#精确到天
4 
5 res = datetime.date.today() + datetime.timedelta(days=-5)#获取5天前的时间
6 res1 = datetime.datetime.today() + datetime.timedelta(minutes=5)#获取5分钟后
7                                                       #weeks,days,minutes,seconds

五、os模块

 1 print(os.getcwd())#取当前工作目录
 2 os.chmod("拼音.py",2)#给文件/目录加权限,对Windows下的不好使
 3 print(os.chdir("C:\\Users\yantiantian\Desktop\python课堂笔记\day6"))#更改当前目录
 4 print(os.getcwd())
 5 print(os.makedirs("ytt/python"))#创建文件夹时,父目录不存在时会自动帮你创建父目录
 6 print(os.mkdir("test2"))#创建文件夹,父目录不存在时直接报错
 7 print(os.removedirs("ytt/python"))#删除空目录
 8 print(os.rmdir("test2"))#只能删除文件夹
 9 print(os.remove("C:\\Users\yitai\Desktop\python课堂笔记\day6\logs\android\android_2018-04-12.log"))#只能删除文件
10 print(os.listdir(D:\\))#列出一个目录下的所有文件,所有文件都放到一个list里
11 print(os.stat("拼音.py"))#获取文件信息
12 print(os.sep)#当前操作系统的路径分隔符,Linux环境都是/  windows环境都是:
13 print(os.linesep)#当前操作系统的换行符  \n  \r\n
14 print(os.environ)#当前系统的环境变量
15 print(os.name)#当前系统名称
16 res = os.system(ipconfig)#执行操作系统命令,但是获取不到结果
17 print(res...,res)
18 res1 = os.popen(ipconfig).read()#执行操作系统命令,可以获取到命令执行的结果
19 print(res1..,res1)
 1 #__file__#获取当前文件的绝对路径
 2 print(os.path.abspath(__file__))#获取绝对路径
 3 print(os.path.split("/usr/hehe/hehe.txt"))#分割路径和文件名的
 4 print(os.path.dirname("d:\\ly-code"))#获取父目录,获取它的上一级目录
 5 
 6 print(os.path.basename("d:\\ly-code"))#获取最后一级
 7 print(os.path.exists("d:\\ly-code"))#目录文件是否存在
 8 print(os.path.isabs("d:\\ly-code"))#判断是否绝对路径
 9 print(os.path.isdir("d:\\ly-code"))#判断是否是一个路径,目录是否存在
10 print(os.path.isfile("ytt.txt"))#判断是否是一个文件1.是否存在,2,必须是一个文件
11 #没写路径的话就默认在当前路径下找,写了就在绝对路径下找
12 
13 print(os.path.getsize(C:\\Users\\yitai\\Desktop\\python课堂笔记\\day6\\logs\\android\\android_2018-04-13.log))#获取文件的大小,字节
14 #上传文件不能超过2M,2M转成kb再转成字节来判断
15 
16 print(os.path.join("root",hehe,myswl,a.sql))#拼接成一个路径
1 for abs_path,dir,file in os.walk(C:\\Users\yitai\Desktop\python课堂笔记\python课堂笔记\day6\logs):
2     print(abs_path:%s,dir:%s,file:%s%(abs_path,dir,file))

os小练习如下:

在双数日期的日志文件 随便写点东西
1.获取到logs目录下面的所有文件 用os.walk()方法
2.根据文件名来判断,是否是双数日期 ,分割字符串,取到日期
3.12%2==0
4.打开这个文件 open()

1 import os
2 for abs_path,dir,file in os.walk(rC:\Users\yitai\Desktop\python课堂笔记\python课堂笔记\day6\logs):#获取目录下的内容
3     for f in file:
4         day = f.split(.)[0].split(-)[-1]#分割字符串,取到日期
5         print(day)
6         if int(day)%2==0:
7             file_name = os.path.join(abs_path,f)#拼接绝对路径
8             open(file_name,a+,encoding=utf-8).write(写东西)

六、sys模块

1 print(sys.platform)#判断操作系统
2 print(sys.path)#python的环境变量
3 
4 sys.path.append(../day5)#加入到环境变量中最后一位
5 sys.path.insert(../day5)#加入到环境变量中第一位,效率更高
6 
7 print(sys.argv)#用来获取命令行里面运行python文件的时候传入的参数

七、hashlib模块

hashlib模块,主要用于加密相关的操作,在python3的版本里,代替了md5和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法。
加密需要先实例化MD5对象,再将字符串转成bytes类型(加密必须得是bytes类型,不能直接对字符串加密)进行加密,且md5是不可逆的!

1 m =hashlib.md5()#实例化md5对象
2 passwd =ytt123456
3 # passwd.encode()#把字符串转成bytes类型
4 #加密必须得是bytes类型
5 m.update(passwd.encode())#不能直接对字符串加密,要先把字符串转成bytes类型
6 print(m.hexdigest())
7 #md5是不可逆的

将加密写成一个函数如下:

1 def my_md5(str):
2     new_str = str.encode()#字符串转成bytes类型
3     #new_str = b‘%s‘%str##字符串转成bytes类型
4     m = hashlib.md5()#实例化md5对象
5     m.update(new_str)#加密
6     return m.hexdigest()#获取结果返回

八、xpinyin(拼音)模块

1 import xpinyin
2 p = xpinyin.Pinyin()#实例化
3 res = p.get_pinyin(烘干)#默认不传后面的话,两个拼音之间会有- 链接
4 print(res)
5 print(p.get_pinyin(烘干,‘‘))#汉字转成拼音

九、写excel模块

1 import xlwt
2 book = xlwt.Workbook()#新建一个excel
3 sheet = book.add_sheet(sheet1)#加sheet页
4 sheet.write(0,0,姓名)#行、列,写入的内容
5 sheet.write(0,1,年龄)
6 sheet.write(0,2,性别)
7 book.save(stu.xls)#结尾一定要用.xls

十、json模块

 1 import json
 2 #json串是一个字符串
 3 f = open(product,encoding=utf-8)
 4 res = f.read()
 5 print(json.loads(res))#字符串变成字典
 6 product_dic = json.loads(res)#把字符串,变成python的数据类型
 7 print(type(product_dic))
 8 print(product_dic.get(product_info))
 9 
10 print(json.load(f))#传一个文件对象,它会帮你读文件
 1 d = {
 2     zll:{
 3         addr:北京,
 4         age:28
 5     },
 6     ljj:{
 7         addr:北京,
 8         age:38
 9     }
10 }
11 #
12 fw = open(user_info.json,w,encoding=utf-8)
13 dic_json = json.dumps(d,ensure_ascii=False,indent=4)#字典转成json,字典转成字符串
14                          #显示为中文        缩进4格
15 print(dic_json)
16 fw.write(dic_json)
17 
18 json.dump(d,fw,ensure_ascii=False,indent=4)#操作文件,自动帮你写了

json文件小练习

 1 import json
 2 def op_data(filename,dic=None):
 3     if dic:#字典不为空,写入
 4         with open(filename,w,encoding=utf-8) as fw:
 5             json.dump(dic,fw,ensure_ascii=False,indent=4)#操作文件,自动帮你写了
 6     else:
 7         with open(filename,encoding=utf-8) as fr:
 8             return json.load(fr)#传一个文件对象,它会帮你读文件
 9 
10 FILE_NAME = user_info.json
11 all_users =op_data(user_info.json)
12 print(all_users)
13 for i in range(3):
14     choice = input(输入,1注册,2删除)
15     if choice ==1:
16         username = input(username:)
17         pwd = input(pwd:)
18         if username not in all_users:
19             all_users[username] =pwd
20             op_data(FILE_NAME,all_users)
21     elif choice ==2:
22         username =input(username:)
23         all_users.pop(username)
24         op_data(FILE_NAME,all_users)

 

 



 

































以上是关于python--常用模块的主要内容,如果未能解决你的问题,请参考以下文章

python常用代码片段总结

nodejs常用代码片段

python常用代码

盘点Python常用的模块和包

Day5 模块及Python常用模块

python常用模块