1. 一.今日主要内容
    1.nametuple:(命名元组,本质还是元组)
    命名元组=>类似创建了一个类
    结构化时间其实是个命名元组
    2.os
    主要是针对操作系统的
    一般用来操作文件系统
    os.makedirs() 可以一次性创建多级目录
    os.rmdir() 删除一个文件夹
  2.  
  3. os.path.dirname() 获取文件夹
    3.sys(后边学习包和模块的基础)
    主要针对的是我们的python解释器
    sys.path(重点中的重点)
  4.  
  5. 4.序列化
    把一个对象拍散 叫序列化
    把拍散的内容整合回对象,反序列化
  6.  
  7. (1)pickle(重点//把大象拍散)
    把一个对象进行序列化操作
  8.  
  9. 1.dumps() 把对象序列化成字节
    2.loads() 把字节反序列化成对象
  10.  
  11. 3.dump() 把对象序列化写入文件
    4.load() 把文件中的内容反序列化成对象
    (2)json(重点中的重点)就是一种数据格式,不是一门技术.(在python中,就是一种模块)
    #json和pickle操作是一样,但是数据的格式化是不同的
    json你可以认为是python中的字典,有一点点的不一样
    区别:
    python:True,False,None
    json:true,false,null
  12.  
  13. 1.dumps() 把对象序列化成json
    2.loads() json反序列化成对象
  14.  
  15. 3.dump() 把对象序列化写入文件
    4.load() 把文件中的内容反序列化成对象
  1. 二.今日内容大纲
    1.命名元组
    2.os模块
    3.sys模块
    4.pickle模块
    5.json模块
    三.今日内容详解
  1. 1.命名元组(namedtuple)
    (1)
  1. from collections import namedtuple
  2. #类
  3. p=namedtuple('Point',['x','y'])
  4. #对象
  5. '''#等价于下面
  6. # class Point:
  7. # def __init__(self,x,y):
  8. # self.x=x
  9. # self.y=y
  10. '''
  11. p1=p(10,20)
  12. print(p1)
  13. print(p1.x)
  14. print(p1.y)
  15. #在这里我们把Point看作是类,p看作是对象
  16. '''
  17. 结果:
  18. Point(x=10, y=20)
  19. 10
  20. 20
  21. '''
  1. (2)
  1. from collections import namedtuple
  2. car=namedtuple('Car',['chepai','color','pailiang'])
  3. c=car('京C-10000','绿色','1.8T')
  4. print(c)
  5.  
  6. # 结果:Car(chepai='京C-10000', color='绿色', pailiang='1.8T')
  7.  
  8. import time
  9. print(time.localtime())
  10.  
  11. #结果:time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=20,
  12. # tm_min=16, tm_sec=11, tm_wday=3, tm_yday=361, tm_isdst=0)
  13. #结构化时间其实是个命名元组
  1. 2.os模块
    (1)
  1. import os #可以一次性创建多级目录
  2. # 直接帮助创建 //必须要记住.很常用
  3. os.makedirs('baby/baobao/donggua/黄晓明') #可以一次性创建多级目录
  4.  
  5. # 下面代码行在运行时必须注释掉上边的那行代码
  6. os.makedirs('baby/安哥拉/特斯拉/黄晓明') #可以一次性创建多级目录

(2)

  1. import os
  2. os.mkdir(r'donggua\xiaobai') #上层文件夹必须存在,创建一个文件
  3. #注意这个地方一定要添加上r

(3)

  1. import os
  2. os.removedirs('donggua') #目录不是空,不能删除
  3. os.removedirs('baby/安哥拉/特斯拉/黄晓明') #安哥拉/特斯拉/黄晓明全部删除了
  4. #可以帮我们删除当前这个目录级中的所有空文件夹

(4)

  1. #创建可以多创建,但是删除不可以多删除,
  2. import os
  3. os.rmdir('baby/baobao/donggua/黄晓明')
  4. #一次只能删除一个'黄晓明'文件

(5)#用法介绍1

  1. os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式 打印
  2. os.remove() 删除一个文件
  3. os.rename("oldname","newname") 重命名文件/目录
  4. os.stat('path/filename') 获取文件/目录信息
  5.  
  6. os.system("bash command") 运⾏shell命令,直接显示
  7. os.popen("bash command).read() 运⾏shell命令,获取执行结果
  8. os.getcwd() 获取当前工作⽬目录,即当前python脚本工作的目录路路径
  9. os.chdir("dirname") 改变当前脚本工作⽬目录;相当于shell下cd #

#用法介绍2

  1. stat()属性解读(linux系统用的比较多,用到的时候再说)
  2.  
  3. stat结构
  4.  
  5. st_mode: inode 保护模式
  6. st_ino: inode 节点号。
  7. st_dev: inode 驻留的设备。
  8. st_nlink: inode 的链接数。
  9. st_uid: 所有者的用户ID
  10. st_gid: 所有者的组ID
  11. st_size: 普通⽂文件以字节为单位的大小;包含等待某些特殊文件的数据。
  12. st_atime: 上次访问的时间。
  13. st_mtime: 最后一次修改的时间。
  14. st_ctime: 由操作系统报告的"ctime"
  15. 在某些系统上(如Unix)是最新的元数据更改的时间,
  16. 在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。
  1. (6)
  1. #查看当前文件夹内所有的内容
  2. import os
  3. os.system('dir') #运⾏shell命令,直接显示
  4. #注意,上面这条命令,会显示一些看不懂的字符

(7)超级重点知识(popen)

  1. import os
  2. print(os.popen('dir')) #结果:<os._wrap_close object at 0x00000195BF1475C0>
  3. print(os.popen('dir').read()) #运⾏shell命令,获取执行结果
  4. #显示正常的当前目录
  5. #后期学习到运维的时候会用到,服务器之间的链接等等,然后敲命令
  6. '''
  7. #上边第二条语句执行的结果:
  8. 驱动器 F 中的卷是 新加卷
  9. 卷的序列号是 DC0A-B9CD
  10.  
  11. F:\Python_workspace_S18\week5\day23 内置模块2 的目录
  12.  
  13. 2018-12-27 20:49 <DIR> .
  14. 2018-12-27 20:49 <DIR> ..
  15. 2018-12-27 20:18 3,263 01 今日内容大纲
  16. 2018-12-27 20:05 3,859 02 作业讲解.py
  17. 2018-12-27 20:17 863 03 命名元组.py
  18. 2018-12-27 20:49 3,296 04 os模块.py
  19. 2018-12-27 12:43 783 05 pickle模块.py
  20. 2018-12-27 12:53 77 06 json模块.py
  21. 2018-12-27 20:33 <DIR> baby
  22. 2018-12-27 20:29 <DIR> donggua
  23. 2018-12-27 17:42 931 test.py
  24. 2018-12-27 19:57 90 userinfo
  25. 2018-12-27 15:23 1,145 今日作业.py
  26. 2018-12-27 12:53 296 汪峰.xml
  27. 10 个文件 14,603 字节
  28. 4 个目录 151,124,221,952 可用字节
  29. '''

(8)

  1. #getcwd() 获取当前工作目录
  2. import os
  3. print(os.getcwd()) #结果:F:\Python_workspace_S18\week5\day23 内置模块2
  4. #也就是当前工作文件夹的绝对路径

(9)

  1. import os
  2. os.chdir('baby') #chdir()代表更换当前的工作目录
  3. print(os.getcwd()) #F:\Python_workspace_S18\week5\day23 内置模块2\baby
  4. #目录发生了改变
  5. f=open('userinfo',mode='r',encoding='utf-8') #这样就不能正常工作了
  6. for line in f:
  7. print(line)
  8.  
  9. f=open('../userinfo',mode='r',encoding='utf-8') #回到上一层目录,这样就可以正常工作了
  10. for line in f:
  11. print(line)

(10)

#用法介绍3

  1. os.path os.path.abspath(path) 返回path规范化的绝对路路径
  2. os.path.split(path) path分割成目录和文件名二元组返回
  3. os.path.dirname(path) 返回path的目录。
  4. 其实就是os.path.split(path)的第一个元素
  5. os.path.basename(path) 返回path最后的文件名。
  6. 如何path以/或\结尾,那么就会返回空值。 os.path.split(path)的第二个元素
  7.  
  8. os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
  9. os.path.isabs(path) 如果path是绝对路路径,返回True
  10. os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
  11. os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
  12. os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数 将被忽略
  13. os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间
  14. os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
  15. os.path.getsize(path) 返回path的大⼩小
  16.  
  17. 特殊属性: os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
  18. os.linesep 输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"
  19. os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
  20. os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'

(11)

  1. #os.path 和路径相关的内容
  2. import os
  3. print(os.path.abspath('userinfo')) #把相对路径改写成绝对路径

(12)

  1. # 将path分割成目录和文件名,2元素以元组返回
  2. import os
  3. print(os.path.abspath('userinfo')) #把相对路径改成绝对路径
  4. #结果:F:\Python_workspace_S18\week5\day23 内置模块2\userinfo
  5. print(os.path.split(r'F:\Python_workspace_S18\week5\day23 内置模块2\baby'))
  6. #结果:('F:\\Python_workspace_S18\\week5\\day23 内置模块2', 'baby')
  7. print(os.path.dirname(r'F:\Python_workspace_S18\week5\day23 内置模块2\baby'))
  8. #结果:F:\Python_workspace_S18\week5\day23 内置模块2
  9. print(os.path.basename(r'F:\Python_workspace_S18\week5\day23 内置模块2\baby'))
  10. #结果: baby
  1. 整合结果:
  2. F:\Python_workspace_S18\week5\day23 内置模块2\userinfo
  3. ('F:\\Python_workspace_S18\\week5\\day23 内置模块2', 'baby')
  4. F:\Python_workspace_S18\week5\day23 内置模块2
  5. baby

(13)

  1. #exists 判断是否存在 (返回结果是False&true)
  2. import os
  3. print(os.path.exists(r'F:\Python_workspace_S18\week5\day23 内置模块2\baby'))
  4. #结果:True

3.sys模块

(1)

  1. # \r 回车 \n 换行
  1. #sys模块
  2. #因为变量上边写的是win32
  3.  
  4. import sys
  5. print(sys.platform)
  6. #结果:win32

(2)超级重点的知识:

  1. #模块部分的重点,也就是path的问题python
  2. #返回模块的搜索路径
  3. import sys
  4. print(sys.path) #找模块.必须要记住,模块的搜索路径
  5. sys.path.append('F:\Python_workspace_S18\week5\day21 继承')
  6. print(sys.path)
  7. #在文件路径列表中添加目录
  8. #跨文件,找路径可以考虑这个东西
  9.  
  10. import master
  11. master.chi()

master.py

  1. def chi():
  2. print('大神很能吃')
  1. #结果:
  2. ['F:\\Python_workspace_S18\\week5\\day23 内置模块2', 'F:\\Python_workspace_S18', 'C:\\Python36\\python36.zip', 'C:\\Python36\\DLLs', 'C:\\Python36\\lib', 'C:\\Python36', 'C:\\Python36\\lib\\site-packages', 'G:\\PyCharm 2018.2.3\\helpers\\pycharm_matplotlib_backend']
  3. ['F:\\Python_workspace_S18\\week5\\day23 内置模块2', 'F:\\Python_workspace_S18', 'C:\\Python36\\python36.zip', 'C:\\Python36\\DLLs', 'C:\\Python36\\lib', 'C:\\Python36', 'C:\\Python36\\lib\\site-packages', 'G:\\PyCharm 2018.2.3\\helpers\\pycharm_matplotlib_backend', 'F:\\Python_workspace_S18\\week5\\day21 继承']
  4. 大神很能吃

(3)

  1. sys.path.clear() #这句话一定不能写

4.pickle模块

(1)

  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.  
  8. def tiaoxi(self):
  9. print(f"{self.name}大象特别喜欢调戏人")
  10. e=Elephant('宝宝','1.85T','')
  11. e.tiaoxi()
  12.  
  13. #序列化
  14. bs=pickle.dumps(e) #把对象进行序列化
  15. print(bs)
  16.  
  17. Bs=b'\x80\x03c__main__\nElephant\nq\x00)\x81q\x01}q\x02(X\x04\x00\x00\x00nameq\x03X\x06\x00\x00\x00\xe5\xae\x9d\xe5\xae\x9dq\x04X\x06\x00\x00\x00weightq\x05X\x04\x00\x00\x00185Tq\x06X\x06\x00\x00\x00heightq\x07X\x03\x00\x00\x00175q\x08ub.'
  18.  
  19. #反序列化
  20. dx=pickle.loads(bs) #反序列化,得到的是大象
  21. dx.tiaoxi()
  22. dx=pickle.loads(Bs)
  23. dx.tiaoxi()
  24.  
  25. #xml解析比较麻烦

(2)

  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 tiaoxi(self):
  8. print(f"{self.name}大象特别喜欢调戏人")
  9. # (1-1)#第一步:写
  10. # e1=Elephant('宝宝','1.85T','175')
  11. # e2=Elephant('宝贝','1.20T','120')
  12. # f=open('大象',mode='wb')
  13. # #下面也是序列化
  14. # pickle.dump(e1,f) #123 没有s(dumps)的这个方法是把对象打散写入到文件
  15. # pickle.dump(e2,f) #123 没有s(dumps)的这个方法是把对象打散写入到文件
  16. #写入文件的内容,我们是看不懂的//序列化的内容不是给人看的
  17. #前一个参数是对象,后一个参数是文件句柄
  18.  
  19. #注意,如果两个都想写入的话,需要都要打开
  20. (1-2)#第二步:读
  21. # f=open('大象',mode='rb')
  22. # obj1=pickle.load(f)
  23. # obj2=pickle.load(f)
  24. # obj1.tiaoxi()
  25. # obj2.tiaoxi()
  26.  
  27. (1-3)
  28. #存的时候没有问题,读的时候就有问题了
  29. #排除读完文件的异常
  30. # f=open('大象',mode='rb')
  31. # while 1:
  32. # try:
  33. # obj=pickle.load(f)
  34. # obj.tiaoxi()
  35. # except Exception:
  36. # break
  37.  
  38. (2-1)
  39. #将对象放入列表中,
  40. e1=Elephant('宝宝','1.85T','')
  41. e2=Elephant('宝贝','1.20T','')
  42. lst=[e1,e2]
  43. #写
  44. pickle.dump(lst,open('大象',mode='wb'))
  45.  
  46. #读
  47. lst=pickle.load(open('大象',mode='rb'))
  48. for dx in lst:
  49. dx.tiaoxi()

5.json模块

(1)

  1. import json
  2. dic = {"baby":None, "hxm":False, "syy":"小白杨"}
  3. s = json.dumps(dic) # json处理中文的问题
  4. print(s)
  5. #结果:{"baby": null, "hxm": false, "syy": "\u5c0f\u767d\u6768"}

(2)

  1. import json
  2. dic = {"baby":None, "hxm":False, "syy":"小白杨"}
  3. s = json.dumps(dic, ensure_ascii=False) # json处理中文的问题
  4. # s = json.dumps(dic, ensure_ascii=False).encode('utf-8')
  5. #在这里我们转换成字节就乐意传输数据了
  6. print(s) #成功的解决了中文问题
  7. print(type(s)) #注意这个转换的是字符串
  8. #结果:{"baby": null, "hxm": false, "syy": "小白杨"}
  9. #<class 'str'>

(3)

  1. import json
  2. d = json.loads('{"baby": null, "hxm": false, "syy": "史杨杨"}')
  3. print(d) #结果;{'baby': None, 'hxm': False, 'syy': '史杨杨'}
  4. print(type(d)) #结果:<class 'dict'>
  5. print(d['baby'])#结果:None #因为这是json里的数据

(4)

  1. #一个json文件一般放一个对象
  2. #如果非要放多个,通过列表的形式,存放数据,注意这个数据中间必须有逗号进行间隔
  3. import json
  4. f=open('baby.json',mode='w',encoding='utf-8')
  5. # json.dump({"baby":None, "hxm":False, "syy":"史杨杨"}, f)
  6. #写入文件的结果:{"baby": null, "hxm": false, "syy": "\u53f2\u6768\u6768"}
  7.  
  8. json.dump({"baby":None, "hxm":False, "syy":"史杨杨"}, f, ensure_ascii=False)
  9. # #写入文件的结果:{"baby": null, "hxm": false, "syy": "史杨杨"}

(5)#读出结果

  1. import json
  2. f = open("baby.json", mode="r", encoding="utf-8")
  3. obj = json.load(f)
  4. print(obj)
  5. 结果:[{'baby': None, 'hxm': False, 'syy': '史杨杨'}, {'baby': None, 'hxm': False, 'syy': '史杨杨'}]

巨蟒python全栈开发-第23天 内置常用模块2的更多相关文章

  1. 巨蟒python全栈开发-第22天 内置常用模块1

    一.今日主要内容 1.简单了解模块 你写的每一个py文件都是一个模块 数据结构(队列,栈(重点)) 还有一些我们一直在使用的模块 buildins 内置模块.print,input random 主要 ...

  2. 巨蟒python全栈开发-第24天 内置常用模块3

    一. 1.re模块基础知识 2.python模块&re正则模块 3.实战:re模块&python(链家&电影天堂&豆瓣) 复习:上节课重点(1)sys.path 模块的 ...

  3. 巨蟒python全栈开发-第13天 内置函数 匿名函数lambda

    一.今日内容总览 1.内置函数(1):并不是每一个内置函数都是那么常用 上菜:内置函数部分//思维导图:https://www.processon.com/view/link/5b4ee15be4b0 ...

  4. 巨蟒python全栈开发-第14天 内置函数2 递归 二分查找

    一.今日内容总览 1.内置函数补充 repr() 显示出字符串的官方表示形式 chr() arscii码中的字,转换成位置 ord() arscii码中的位置,转换成字2.递归 自己调用自己 两个口: ...

  5. python全栈开发从入门到放弃之常用模块和正则

    什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...

  6. python全栈开发中级班全程笔记(第二模块、第四章(三、re 正则表达式))

    python全栈开发笔记第二模块   第四章 :常用模块(第三部分) 一.正则表达式的作用与方法 正则表达式是什么呢?一个问题带来正则表达式的重要性和作用      有一个需求 : 从文件中读取所有联 ...

  7. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  8. python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)

    python全栈开发中级班全程笔记 第三章:员工信息增删改查作业代码 作业要求: 员工增删改查表用代码实现一个简单的员工信息增删改查表需求: 1.支持模糊查询,(1.find name ,age fo ...

  9. 巨蟒python全栈开发linux之centos1

    1.linux服务器介绍 2.linux介绍 3.linux命令学习 linux默认有一个超级用户root,就是linux的皇帝 注意:我的用户名是s18,密码是centos 我们输入密码,点击解锁( ...

随机推荐

  1. 阻塞IO、非阻塞IO的区别

    1.类与类之间的关系:依赖,实现,泛化(继承),关联,组合,聚合. 1)依赖(虚线):一个类是 另一个类的函数参数 或者 函数返回值. 2)实现(实线加小圆):对纯虚函数类(抽象类)的实现. 3)继承 ...

  2. ext4文件系统(转)

    [ext4]01 磁盘布局 - block分析 [ext4]02磁盘布局 - group分析 [ext4]03 磁盘布局 – Flexible group分析 [ext4]04 磁盘布局 - Meta ...

  3. How to fix Cannot change version of project facet Dynamic Web Module to 3.0 Error in Eclipse---转载

    How to fix Cannot change version of project facet Dynamic Web Module to 3.0 Error in Eclipse 原文:http ...

  4. CentOS7 安装lua环境(我是在mysql读写分离用的)

    下载地址:http://www.lua.org/download.html 安装方法: 依次执行以下命令: curl -R -O http://www.lua.org/ftp/lua-5.3.1.ta ...

  5. FPGA开发流程1(详述每一环节的物理含义和实现目标)

    要知道,要把一件事情做好,不管是做哪们技术还是办什么手续,明白这个事情的流程非常关键,它决定了这件事情的顺利进行与否.同样,我们学习FPGA开发数字系统这个技术,先撇开使用这个技术的基础编程语言的具体 ...

  6. HDU 1020 Encoding 模拟

    Encoding Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  7. apache commons io入门

    原文参考  http://www.javacodegeeks.com/2014/10/apache-commons-io-tutorial.html    Apache Commons IO 包绝对是 ...

  8. STM32F10x_RTC日历

    Ⅰ.概述 接着上一篇文章来讲述关于RTC的计数功能,我们以实例RTC日历(读写年.月.日.星期.时.分.秒)来讲述该章节. STM32F1系列芯片的RTC功能和其他系列(F0.F2.F4等)相比来说, ...

  9. nginx配置事例

    #user nobody; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...

  10. Uncaught TypeError: Cannot read property 'addEventListener'

    标签元素还没有创建就调用引用标签的脚本就会出现此问题 将脚本放置在脚本标签的后面就可以了