python常用模块二

Posted wangm-0824

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(rE:U)
 open(test,w).close()
 #创建文件创建文件夹实际上都是跟着工作目录走的,和你当前执行的这个文件并没有关系
 
 路径相关的 os.path.***
 print(os.path.abspath(rtest.txt))           #打印文件绝对路径
 E:Py3Practiseday01ob.txt
 print(os.path.split(rE:测试目录	est.txt)) #根据路径和文件名分割成元组 
 (E:\测试目录, test.txt)
 print(os.path.dirname(rE:测试目录	est.txt)) #获取文件的目录
 E:测试目录
 print(os.path.basename(rE:测试目录	est.txt)) #获取文件的文件名
 test.txt
 
 dir_name = os.path.dirname(__file__)          #打印当前路径的全路径目录
 open(os.path.join(dir_name,test),w)       #在当前目录下创建一个test的文件
 
 print(os.path.exists(rE:s17day17	est1))    #判断路径是否存在(True/False)
 print(os.path.isabs(rE:Py3Practise)) #如果path是绝对路径,返回True/False
 print(os.path.isfile(rE:测试目录	est.txt))  #如果path是一个存在的文件,返回True/False
 print(os.path.isdir(rE:测试目录))    #如果path是一个存在的目录,返回True/False
 
 print(os.path.join(E:\,测试目录,test.txt))   #路径拼接
 E:测试目录	est.txt
 print(os.path.getatime(rE:测试目录	est.txt))    #返回文件件或目录的最后访问时间
 1545831948.7886515
 print(os.path.getmtime(rE:测试目录	est.txt))    #返回文件或目录的最后修改时间
 1545831954.4927616
 print(os.path.getsize(rE:测试目录	est.txt))     #计算文件大小
 print(os.path.getsize(rE:测试目录))              #计算文件夹属性大小
 
 其他属性
 print(os.sep)       #输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
 print(os.linesep)   #输出当前平台使用的行终止符,win下为"
",Linux下为"
"
 print(os.pathsep)   #输出用于分割文件路径的字符串,win下为;,Linux下为:
 结果
  
 
 ;

sys模块

print(sys.version)  # 获取Python解释程序的版本信息
print(sys.path)     # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
print(sys.platform) # 返回操作系统平台名称
sys.exit(0)  # 程序正常退出sys.exit()==exit(0)
sys.exit(1)  # 程序错误退出sys.exit(1)==exit(1)
sys.argv     # 命令行参数List,第一个元素是程序本身路径
一个文件在命令行被执行的时候,py文件后面所有的内容都会成为sys.argv中的一项
C:Usersadmin>python3 E:/Py3Practise/day01/test.py bob jack
[E:/Py3Practise/day01/test.py, bob, jack]

事例二
import sys
user = sys.argv[1]
passwd = sys.argv[2]
if user == bob and passwd == 123:
    print(登陆成功)
else:
    exit()
print(登陆成功之后才能执行的逻辑)
结果
C:Usersadmin>python3 E:/Py3Practise/day01/test.py bob 123
登陆成功
登陆成功之后才能执行的逻辑

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


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

import pickle
class Elephant:
    def __init__(self,name,weight,height):
        self.name = name
        self.weight = weight
        self.height = height
    def play(self):
        print(f{self.name}喜欢玩水)
e = Elephant(大象,185T,210)
e.play()
bs = pickle.dumps(e)    #序列换化
print(bs)
dx = pickle.loads(bs)   #反序列化
dx.play()
结果
大象喜欢玩水
bx80x03c__main__
Elephant
qx00)x81qx01}qx02(Xx04x00x00x00nameqx03Xx06x00x00x00xe5xa4xa7xe8xb1xa1qx04Xx06x00x00x00weightqx05Xx04x00x00x00185Tqx06Xx06x00x00x00heightqx07Xx03x00x00x00210qx08ub.
大象喜欢玩水

事例2
class Elephant:
    def __init__(self,name,weight,height):
        self.name = name
        self.weight = weight
        self.height = height
    def play(self):
        print(f{self.name}喜欢玩水)
e1 = Elephant(大象,185T,210)
e2 = Elephant(老虎,185T,210)
#序列化方法一(写)
f = open(测试文件.txt,mode=wb)
pickle.dump(e1,f)
pickle.dump(e2,f)

#序列化方法二(写)
lst = [e1,e2]
pickle.dump(lst,open(测试文件.txt,mode=wb))
#dump这个方法是把对象打散写入到文件,序列化的内容不是给人看的

#反序列化(读)
lst = pickle.load(open(测试文件.txt,mode=rb))
for dx in lst:
    dx.play()
结果
大象喜欢玩水
老虎喜欢玩水

json模块

import json
# 定义字典,稍后写入json文件
dic = {name:洋洋,age:None,jobs:False}
# 字典转字符
s = json.dumps(dic,ensure_ascii=False)  # json处理中文的问题
print(s)

# 字符转字典
d = json.loads({"name": "洋洋", "age": null, "jobs": false})
print(d[name])

# 写入test.json文件中
with open(test.json,mode=w,encoding=utf-8)as f1:
    json.dump({name:洋洋,age:None,jobs:False},f1,ensure_ascii=False)

# 读取test.json文件内容
with open(test.json,r,encoding=utf-8)as f2:
    print(json.load(f2))

#json文件只能保存一条数据,如果想保存多条数据,需要在列表里添加数据
[
{"name": "洋洋", "age": null, "jobs": false}
{"name": "洋洋", "age": null, "jobs": false}
]

 

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

Python 常用模块学习

Python爬虫 网页图片

python的random模块(生成验证码)

python常用模块之random模块

python常用模块之random

python ranndom模块及生成验证码