• python之常用模块补充


    namedtuple

    命名元组 ->类似创建了一个类

    复制代码
    from collections import namedtuple
    p = namedtuple("point", ["x","y"])
    p1 = p("bob", "jack")
    print(p1)
    print(p1.x)
    print(p1.y)
    
    
    运行结果:
    point(x='bob', y='jack')
    bob
    jack
    复制代码

    os操作系统交互的模块

    复制代码
     import os
     文件和文件夹相关
     os.remove('file_name')            #删除文件
     os.rename('old','new')            #重命名文件名
     os.mkdir('dir_name')              #创建一个空目录
     os.rmdir('dir_name')              #删除单级空目录
     os.makedirs('dir1/dir2/dir3')     #创建多级目录
     os.removedirs('dir1/dir2/dir3')   #删除多级空目录
     print(os.listdir('E:dir1'))      #目录下的所有文件以列表显示
     print(os.stat('E:/PyPractise/test.py')) #查看文件属性
     
     工作目录相关的
     os.system("bash command")       #运行shell命令,直接显示
     os.popen("bash command).read()  #运行shell命令,获取执行结果
     ret = os.popen('dir').read()
     print(ret)            
     print(os.getcwd())              #获取当前工作目录
     os.chdir("dirname")             #改变当前脚本工作目录;相当于shell下cd
     os.chdir(r'E:U')
     open('test','w').close()
     #创建文件创建文件夹实际上都是跟着工作目录走的,和你当前执行的这个文件并没有关系
     
     路径相关的 os.path.***
     print(os.path.abspath(r'test.txt'))           #打印文件绝对路径
     E:Py3Practiseday01ob.txt
     print(os.path.split(r'E:测试目录	est.txt')) #根据路径和文件名分割成元组 
     ('E:\测试目录', 'test.txt')
     print(os.path.dirname(r'E:测试目录	est.txt')) #获取文件的目录
     E:测试目录
     print(os.path.basename(r'E:测试目录	est.txt')) #获取文件的文件名
     test.txt
     
     dir_name = os.path.dirname(__file__)          #打印当前路径的全路径目录
     open(os.path.join(dir_name,'test'),'w')       #在当前目录下创建一个test的文件
     
     print(os.path.exists(r'E:s17day17	est1'))    #判断路径是否存在(True/False)
     print(os.path.isabs(r'E:Py3Practise')) #如果path是绝对路径,返回True/False
     print(os.path.isfile(r'E:测试目录	est.txt'))  #如果path是一个存在的文件,返回True/False
     print(os.path.isdir(r'E:测试目录'))    #如果path是一个存在的目录,返回True/False
     
     print(os.path.join('E:\','测试目录','test.txt'))   #路径拼接
     E:测试目录	est.txt
     print(os.path.getatime(r'E:测试目录	est.txt'))    #返回文件件或目录的最后访问时间
     1545831948.7886515
     print(os.path.getmtime(r'E:测试目录	est.txt'))    #返回文件或目录的最后修改时间
     1545831954.4927616
     print(os.path.getsize(r'E:测试目录	est.txt'))     #计算文件大小
     3
     print(os.path.getsize(r'E:测试目录'))              #计算文件夹属性大小
     0
     
     其他属性
     print(os.sep)       #输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
     print(os.linesep)   #输出当前平台使用的行终止符,win下为"
    ",Linux下为"
    "
     print(os.pathsep)   #输出用于分割文件路径的字符串,win下为;,Linux下为:
     结果
     
     
     
     ;
    复制代码

    sys模块

    复制代码
    复制代码
     1 print(sys.version)  # 获取Python解释程序的版本信息
     2 print(sys.path)     # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
     3 print(sys.platform) # 返回操作系统平台名称
     4 sys.exit(0)  # 程序正常退出sys.exit()==exit(0)
     5 sys.exit(1)  # 程序错误退出sys.exit(1)==exit(1)
     6 sys.argv     # 命令行参数List,第一个元素是程序本身路径
     7 一个文件在命令行被执行的时候,py文件后面所有的内容都会成为sys.argv中的一项
     8 C:Usersadmin>python3 E:/Py3Practise/day01/test.py bob jack
     9 ['E:/Py3Practise/day01/test.py', 'bob', 'jack']
    10 
    11 事例二
    12 import sys
    13 user = sys.argv[1]
    14 passwd = sys.argv[2]
    15 if user == 'bob' and passwd == '123':
    16     print('登陆成功')
    17 else:
    18     exit()
    19 print('登陆成功之后才能执行的逻辑')
    20 结果
    21 C:Usersadmin>python3 E:/Py3Practise/day01/test.py bob 123
    22 登陆成功
    23 登陆成功之后才能执行的逻辑
    复制代码
    复制代码

    序列化
    把一个对象拍散,叫序列化
    把拍散的内容整合回对象,反序列化


    pickle模块
    把一个对象进行序列化操作
    1. dumps()  把对象序列化成字节
    2. loads()  把字节反序列化成对象
    3. dump()  把对象序列化写入文件
    4. load()  把文件中的内容反序列化成对象

    复制代码
    复制代码
     1 import pickle
     2 class Elephant:
     3     def __init__(self,name,weight,height):
     4         self.name = name
     5         self.weight = weight
     6         self.height = height
     7     def play(self):
     8         print(f'{self.name}喜欢玩水')
     9 e = Elephant('大象','185T','210')
    10 e.play()
    11 bs = pickle.dumps(e)    #序列换化
    12 print(bs)
    13 dx = pickle.loads(bs)   #反序列化
    14 dx.play()
    15 结果
    16 大象喜欢玩水
    17 b'x80x03c__main__
    Elephant
    qx00)x81qx01}qx02(Xx04x00x00x00nameqx03Xx06x00x00x00xe5xa4xa7xe8xb1xa1qx04Xx06x00x00x00weightqx05Xx04x00x00x00185Tqx06Xx06x00x00x00heightqx07Xx03x00x00x00210qx08ub.'
    18 大象喜欢玩水
    19 
    20 事例2
    21 class Elephant:
    22     def __init__(self,name,weight,height):
    23         self.name = name
    24         self.weight = weight
    25         self.height = height
    26     def play(self):
    27         print(f'{self.name}喜欢玩水')
    28 e1 = Elephant('大象','185T','210')
    29 e2 = Elephant('老虎','185T','210')
    30 #序列化方法一(写)
    31 f = open('测试文件.txt',mode='wb')
    32 pickle.dump(e1,f)
    33 pickle.dump(e2,f)
    34 
    35 #序列化方法二(写)
    36 lst = [e1,e2]
    37 pickle.dump(lst,open('测试文件.txt',mode='wb'))
    38 #dump这个方法是把对象打散写入到文件,序列化的内容不是给人看的
    39 
    40 #反序列化(读)
    41 lst = pickle.load(open('测试文件.txt',mode='rb'))
    42 for dx in lst:
    43     dx.play()
    44 结果
    45 大象喜欢玩水
    46 老虎喜欢玩水
    复制代码
    复制代码

    json模块

    复制代码
    复制代码
     1 import json
     2 # 定义字典,稍后写入json文件
     3 dic = {'name':'洋洋','age':None,'jobs':False}
     4 # 字典转字符
     5 s = json.dumps(dic,ensure_ascii=False)  # json处理中文的问题
     6 print(s)
     7 
     8 # 字符转字典
     9 d = json.loads('{"name": "洋洋", "age": null, "jobs": false}')
    10 print(d['name'])
    11 
    12 # 写入test.json文件中
    13 with open('test.json',mode='w',encoding='utf-8')as f1:
    14     json.dump({'name':'洋洋','age':None,'jobs':False},f1,ensure_ascii=False)
    15 
    16 # 读取test.json文件内容
    17 with open('test.json','r',encoding='utf-8')as f2:
    18     print(json.load(f2))
    19 
    20 #json文件只能保存一条数据,如果想保存多条数据,需要在列表里添加数据
    21 [
    22 {"name": "洋洋", "age": null, "jobs": false}
    23 {"name": "洋洋", "age": null, "jobs": false}
    24 ]
    复制代码
  • 相关阅读:
    random模块的随机变换
    re模块与正则表达式进阶
    面向对象整体细化
    __new__内部工作方式
    前端之CSS
    前端之HTML
    数据库
    同步异步阻塞非阻塞
    进程间的通信
    day 36(多进程)
  • 原文地址:https://www.cnblogs.com/q455674496/p/10208679.html
Copyright © 2020-2023  润新知