1.namedtuple
命名元组 -> 类似创建一个类
from collections import namedtuple
# 类
p = namedtuple("Point", ["x", "y","z"])
# 对象
p1 = p(10, 20,30)
print(p1)
print(p1.x) #10
print(p1.y) #20
2.os模块
主要是针对操作系统
一般用来操作文件系统
os.makedirs() 可以一次性创建多级目录
os.rmdir() 删除指定一个文件夹
import os
#必须要记住.很常用
os.makedirs("baby/安哥拉/特斯拉/黄晓明") # 可以一次性创建多级目录
os.mkdir("hyf\zxx\lvb") # 上层文件夹必须存在
os.removedirs("baby/安哥拉/特斯拉/黄晓明") # 可以帮我们删除当前这个目录级中的所有空文件夹
#需要记住
os.rmdir("baby/baobao/baby/黄晓明") # 指定文件夹删除
os.system("dir")
print(os.popen("dir").read()) # 执行shell脚本或者cmd命令
print(os.getcwd()) # 当前程序运行的文件夹 D:\python_workspace_s18\day23 内置模块02
os.chdir("baby") # 改变工作目录
print(os.getcwd())
f = open("../userinfo", mode="r", encoding="utf-8")
for line in f:
print(line)
os.makedirs('dirname1/dirname2') 可⽣成多层递归⽬录
os.removedirs('dirname1') 若⽬录为空,则删除,并递归到上⼀级⽬录,如若也为空,则删 除,依此类推 os.mkdir('dirname') ⽣成单级⽬录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空⽬录,若⽬录不为空则⽆法删除,报错;相当于shell中 rmdir dirname os.listdir('dirname') 列出指定⽬录下的所有⽂件和⼦⽬录,包括隐藏⽂件,并以列表⽅式 打印
os.remove() 删除⼀个⽂件
os.rename("oldname","newname") 重命名⽂件/⽬录
os.stat('path/filename') 获取⽂件/⽬录信息
os.system("bash command") 运⾏shell命令,直接显示
os.popen("bash command).read() 运⾏shell命令,获取执⾏结果
os.getcwd() 获取当前⼯作⽬录,即当前python脚本⼯作的⽬录路径
os.chdir("dirname") 改变当前脚本⼯作⽬录;相当于shell下cd
os.path和路径相关的内容
os.path.dirname() 获取到文件的文件夹
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成⽬录和⽂件名⼆元组返回
os.path.dirname(path) 返回path的⽬录。其实就是
os.path.split(path)的第⼀个元素
os.path.basename(path) 返回path最后的⽂件名。如何path以/或\结尾,那么就会返回空值。 即os.path.split(path)的第⼆个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是⼀个存在的⽂件,返回True。否则返回False
os.path.isdir(path) 如果path是⼀个存在的⽬录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第⼀个绝对路径之前的参数 将被忽略 os.path.getatime(path) 返回path所指向的⽂件或者⽬录的最后访问时间
os.path.getmtime(path) 返回path所指向的⽂件或者⽬录的最后修改时间
os.path.getsize(path) 返回path的⼤⼩
# 特殊属性:
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep 输出当前平台使⽤的⾏终⽌符,win下为"\r\n",Linux下为"\n"
os.pathsep 输出⽤于分割⽂件路径的字符串 win下为;,Linux下为:
os.name 输出字符串指示当前使⽤平台。win->'nt'; Linux->'posix'
print(os.path.abspath('userinfo') ) # 把相对路径改成绝对路径
print(os.path.split(r"D:\python_workspace_s18\day23 内置模块02\userinfo")) #将路径分割成目录和文件名二元组返回
print(os.path.dirname(r"D:\python_workspace_s18\day23 内置模块02\userinfo")) #返回目录
print(os.path.basename(r"D:\python_workspace_s18\day23 内置模块02\userinfo")) #返回文件名
print(os.path.exists(r"D:\python_workspace_s18\day23 内置模块02") ) # 存在?如果路径存在文件夹,返回True;如果不存在,返回Flase
3.sys模块
主要针对的是我们的python解释器
sys.path(重点中的重点) 模块的查找路径
sys.argv 命令⾏参数List,第⼀个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0),错误退出
sys.exit(1) sys.version 获取Python解释程序的版本信息
sys.path 返回模块的搜索路径,初始化时使⽤PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
import sys
# print(sys.platform)
print(sys.path) # 找模块的. 必须要记住. 模块的搜索路径
sys.path.append("D:\\python_workspace_s18\\day21 继承")
4.序列化
把一个队形拍散叫序列化
把拍散的内容整整合回对象,叫反序列化
5.pickle(重点)
把一个对象进行序列化操作
1. dumps( ) 把对象序列化成字节
2.loads() 把字节反序列化成对象
1.dump( ) 把对象序列化写入文件
2. load () 把文件中的内容反序列化成对象
import pickle
#
class Elephant:
def __init__(self, name, weight, height):
self.name = name
self.weight = weight
self.height = height
def tiaoxi(self):
print(f"{self.name}大象特别喜欢调戏人")
e = Elephant("宝宝", "185T", "175")
# e.tiaoxi()
#
# # 序列化
bs = pickle.dumps(e) # 把对象进行序列化
print(bs)
# 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.'
# 发序列化
dx = pickle.loads(bs) # 发序列化. 得到的是大象
dx.tiaoxi()
e1 = Elephant("宝宝", "185T", "175")
e2 = Elephant("宝贝", "120T", "120")
f = open("大象", mode="wb")
# 这也是序列化
pickle.dump(e1, f) # 没有s的这个方法是把对象打散写入到文件, 序列化的内容不是给人看的
pickle.dump(e2, f) # 没有s的这个方法是把对象打散写入到文件, 序列化的内容不是给人看的
f = open("大象", mode="rb")
while 1:
try:
obj = pickle.load(f)
obj.tiaoxi()
except Exception:
break
e1 = Elephant("宝宝", "185T", "175")
e2 = Elephant("宝贝", "120T", "120")
lst = [e1, e2]
pickle.dump(lst, open("大象", mode="wb"))
读
lst = pickle.load(open("大象", mode="rb"))
for dx in lst:
dx.tiaoxi()
6.json(重点中的重点)
json可以认为是python中的字典.有一点点的不一样:
python: True, False,None
json : true, false,null
1. dumps( ) 把对象序列化成json
2.loads() 把json反序列化成对象
1.dump( ) 把对象序列化写入文件
2. load () 把文件中的内容反序列化成对象
import json
dic = {"baby":None, "hxm":False, "syy":"史杨杨"}
s = json.dumps(dic, ensure_ascii=False) # json处理中文的问题
print(s)
d = json.loads('{"baby": null, "hxm": false, "syy": "史杨杨"}')
print(d['baby'])
f = open("baby.json", mode="w", encoding="utf-8")
json.dump({"baby":None, "hxm":False, "syy":"史杨杨"}, f, ensure_ascii=False)
f = open("baby.json", mode="r", encoding="utf-8")
obj = json.load(f)
print(obj)
- python --- 23 模块 os sys pickle json
一. os模块 主要是针对操作系统的 用于文件操作 二. sys 模块 模块的查找路径 sys.path 三.pickle 模块 1. pickle.dumps(对象) 序列化 把对 ...
- 23 模块 os sys pickle json
一. os模块 主要是针对操作系统的 用于文件操作 二. sys 模块 模块的查找路径 sys.path 三 pickle 模块 1. pickle.dumps(对象) 序列化 ...
- NodeJS学习笔记 (23)模块机制-module
https://github.com/chyingp/nodejs-learning-guide
- WPF权限控制——【2】模块、菜单、按钮
周末没有工作,没有写博客,因为觉得休息很必要:曾听到一句话是这样说的:"你们得救在乎归回安息:你们得力在乎平静安稳".当我想到太阳没秒钟要燃烧420万吨的燃料时,想到的就是造物主的 ...
- 嵌入式系统Linux内核开发工程师必须掌握的三十道题(转)
嵌入式系统Linux内核开发工程师必须掌握的三十道题 如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师,试试看! 1) Linux中主要有哪几种内核 ...
- 尚学堂马士兵struts2 课堂笔记(三)
19-20 简单数据验证 例如 前台jsp 及struts.xml <a href="user/user!add?name=a" >添加用户</a> < ...
- 三十道linux内核面试题
1. Linux中主要有哪几种内核锁? Linux的同步机制从2.0到2.6以来不断发展完善.从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁.这些同步机制的发展伴随Linux从单处理器 ...
- Unity3d地图制作之模型高光
由于颇受暗黑破坏神美工的影响,最近都在研究怎么制作场景地图之类的. 那么今日讲的模型高光虽然和地图无关,但是也涉及到一些美工的知识,尤其是shader. 按照国际惯例,先贴一张图饱饱眼福. 大家可以看 ...
- Python_021(内置方法讲解二)
一.内置方法二 1.__del__方法: a:构造方法:创建一个空间, 析构方法;释放一个空间; b:触发del的情况:Python解释器的垃圾回收机制,和遇到 del 对象名 c:析构方法的思想: ...
随机推荐
- 并发包交换数据Exchanger
/** * * @描述: 用于实现两个人之间的数据交换,每个人完成一定的事务后想与对方交换数据,第一个先拿出数据的人一直等待 * 直到第二个人拿到数据 到来时,才能彼此交换数据. * @作者: Wnj ...
- 用java读取多种文件格式的文件(pdf,pptx,ppt,doc,docx..)
本文通过开源pdfbox和poi进行处理多种文件格式的文本读入 1.需要的jar的maven坐标: <dependency> <groupId>org.apache.pdfbo ...
- Windows 编译 MQTT C++ Client
MQTT MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协议支持所有平台,几乎可 ...
- php安装扩展redis淌过的坑
php安装扩展redis淌过的坑 php扩展 redis cd /usr/local/src/ wget https://github.com/nicolasff/phpredis/archive/2 ...
- PhoneGap Geolocation结合百度地图api获取地理位置api
一.使用百度地图API 1.地址:http://developer.baidu.com/map/ 2.在js DEMO中获取反地址解析的DEMO 3.修改这个DEMO的密钥,去创建应用就能创建密钥,然 ...
- mongodb在windows平台安装和启动
mongodb 官网:https://www.mongodb.com mongodb 官网下载: mongodb-win32-x86_64-2008plus-ssl-3.4.2-signed.msi ...
- bzoj5152 [Wc2018]通道
题目链接 正解:不会做. 写一个爬山算法就过官方数据了(逃 具体来说就是每次随机一个根,然后迭代找最长路的那个点. 多随机几次取$max$就行了.正解以后再补.. #include <bits/ ...
- BZOJ2822:[AHOI2012]树屋阶梯(卡特兰数,高精度)
Description 暑假期间,小龙报名了一个模拟野外生存作战训练班来锻炼体魄,训练的第一个晚上,教官就给他们出了个难题.由于地上露营湿气重,必须选择在高处的树屋露营.小龙分配的树屋建立在一颗高度为 ...
- webpack的正确安装方式
webpack是基于node开发的模块打包工具,所以他本质上是由node实现的. 我们要保持node版本尽量的新,另一个要保持webpack版本尽量的新,高版本的webpack会利用新版本中的一些特性 ...
- spring mvc(4)处理模型数据
处理模型数据 Spring MVC 提供了以下几种途径输出模型数据: – ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加 模型数据 – Map ...