python路径及文件操作,10.22,10.27

更新时间:2023-05-03 04:01:08 阅读: 评论:0

python路径及⽂件操作,10.22,10.27 csv 和ini⽂件处理
作者:⼀个⼩菜鸡
csv常见格式
nums    options      arguments
逗号分割值 comma-Separated Values
CSV是⼀个被⾏分隔符,列分隔符划分成⾏和列的⽂本⽂件
reader(csvfile,dialect = 'excel' ,**fmtparams)
返回DictReader的实例,是⾏迭代器
delimiter 列分隔符,逗号
quotechar 字段的引⽤符号,缺省为“ ,双引号
双引号的处理:
doubleqipte双引号的处理,默认为True。如果和quotechar为同⼀个,Tru海子故居 e则使⽤2个双引号表⽰
Fal表⽰使⽤转义字符将作为双引号的浅醉
escapechar ⼀个转义字符,默认为None
quoting 指定双引号的规则
writer( csvfile,dialect='excel',**fmtparams)
返回DictWriter的实例
主要⽅法有writerow , writerows
当⽂档中有引号的语句对象时,可在语句外再添加⼀对引号以⽰区分
ini⽂件的读解:
ini⽂件中,中括号⾥⾯的称为ction
每⼀个ction内,都是 key=value 形成的键值对,key称为option选项
ini⽂件使⽤configparr来进⾏解析
configparr模块的C青年学堂 onfigParr类就是⽤来操作
read(filenames,encoding=None)
读取ini⽂件,可以是单个⽂件,或者是⽂件列表,可以指定⽂件编码(utf-8?)
ctions()返回ction列表,缺省ction不包括在内
add_ction(ction_name)增加⼀个ction
has_ction(ction_name)判断ction是否存在
options(ction)返回ction的所有option
has_option(ction,option)判断ction是否存在这个option
get(ction,option,*,raw=Fal,vars=None[fallback])
从指定段的选项上取值,如果找到就返回,没找到就去default寻找默认值
items(ction,raw = Fal,vars=None)
没有ction,则返回所有ction名字及其对象,如果指定ction,则返回这ction的键值对组成的⼆元组
t(ction,option,value)
ction存在的情况下,写⼊option=value,要求option,value必须是字符串
remove_ction(ction)
移除ction及其所有option
remove_optioon(ction,option)
移除ction下的option
write(fileobject,space_around_delimiters=True)
将当前config的所有内容写⼊fileobject,⼀般open函数使⽤w模式
shutil 模块使⽤
作者:⼀个⼩菜鸡
shutil ⾼级⽂件操作
提供关于⽂件的复制和删除
在执⾏复制操作时,不能完全的拷贝⽂件和数据,所以有可能会造成数据缺失,以及权限⽆法复制的缺陷
在导⼊了shutil模块后,可以使⽤以下命令:
copyfileobj(fsrc,fdst [length])          (元⽂件,拷贝对象,【缓存长度限制】)
⽂件对象的复制, fsrc 和 fdst 是open打开的⽂件对象,复制内容,fdst 要求可写
length指定了 buffer 的⼤⼩
使⽤copyfileobj 时应注意指针胡须英语 问题,应为w新建⼀个不存在的⽂件时,所写⼊的⽂件内容均在尾端,所以直接拷贝过去的内容为空,应将指针归0再进⾏拷贝
copyfile( src , dst )
实际上底层实现的也是copyfileobj函数调⽤,可以复制⽂件内容,不含元数据,⼆进制内容复制
copymode( src , dst ),只复制权限
copystat( src , dst ) 复制元数据,stat 包含权限
copy( src dst) 复制⽂件内容,权限和部分元数据,不包括创建时间和修改时间:本质上调⽤了 copyfile 和copystat
copy2(src,dst)⽐copy多了复制全部元数据,但需要平台
本质上调⽤的是: copyfile copystat
copytree( src dst ) 递归的复制⽬录,默认使⽤copy2,也就是带更多的元数据复制
使⽤前提  src必须存在,dst必须不存在
copy时过滤掉某些不需要拷贝的⽂件,可使⽤copy( ignore= )参数来过滤掉不需拷贝的⽂件
rm删除
<()
递归删除吗,和rm-rf⼀样,慎⽤,它不是原⼦操作,有可能删除错误,删除的就删除了
move移动
move(src dst,copy_function=copy2)
递归移动⽂件,⽬录到⽬标,返回⽬标
本⾝使⽤的是 os.rename⽅法
如果不⽀持rename,如果是⽬录则想copytree再删除源⽬录
默认使⽤copy2⽅法
shutil还有打包功能,⽣成tar并压缩,⽀持zip,gz,bz,xz格式
序列化和反序列化
来源⽹址:
作者:⼀个⼩菜鸡
思考:
为什么要使⽤序列化?
使⽤序列化之后,就可以将序列化后的内容写⼊磁盘,或者通过⽹络传输到别的机器上
为什么要使⽤反序列化?
⼀个⽂件序列化之后是不⽅便使⽤者对其进⾏查看或者修改的,所以使⽤反序列化,可以还原他未序列化时的⽂件模型
将变量内容从序列化的对象重新读取到内存⾥称之为反序列化
pickle使⽤时需要注意,发送和接收⽅的pickle版本可能不⼀致,从⽽导致序列化的出来的⽂件也不⼀致
使⽤pickle操作时,⽤什么⽅法写⼊,就必须⽤什么⽅法读取(dump,load)(dumps,loads)
pickle库
dumps 对象序列化
dump 对象序列化到⽂件对象(存⼊⽂件)
loads 对象反序列化
load 对象反序列化,从⽂件中读取数据
使⽤模块pickle对⼀个⽂件或者数据类型进⾏序列化:
举例:
import pickle
d = dict(nam
e = Bob , age = 20 , Score =88)
pickle.dumps(d)
返回结果为:
b'\x80\x03}q\x00(X\x03\x00\x00\x00ageq\x01K\x14X\x05\x00\x00\x00scoreq\x02KXX\x04\x00\x00\x00nameq\x03X\x03\x00\x00\x00Bobq\x04u.'
pickle.dumps()⽅法把任意序列对象序列化为⼀个bytes,如何解散微信群聊 然后可以将这个bytes写⼊⽂件,或者
举例:
with open( 'I:/', 'wb' )as f :
pickle.dump(需要保存的数据或⽂件,被保存的实体对象)
pickle.dump(d , f)
⽤pickle.dump()直接把⼀个对象序列化后写⼊⼀个类⽂件对象中!
查看写⼊硬盘的⽂件,是⼀对⼆进制数据,不便于查看,这就是python序列化后的内部信息
当我们要把对象从磁盘读到内存中时,可以先把内容读到⼀个bytes中,再⽤pickle.loads()反序列化出对象,也可以风景画简单 使⽤pickle.load()⽅法从⼀个类⽂件对象中,直接反序列化出对象
举例:
with 邀请信英文 open('I:/', 'rb' ) as f :
pickle.load( f )
print(f)
会显⽰:
{'age': 20, 'score': 88, 'name': 'Bob'}
这个变量和原来的变量是完全不相⼲的对象,只是他们的内容相同⽽已
pickle的问题和其他编程语⾔特有的序列化问题⼀样,只能⽤于python中,不能跨语⾔,版本使⽤,所以只能⽤pickle保存⼀些补重要的数据,即便不能成功的反序列化也没有关系
可调式性/可读性
可调试性/可读性
序列化和反序列化的数据正确性和业务正确性的调试往往需要很长的时间,良好的调试机制会⼤⼤提⾼开发效率。序列化后的⼆进制串往往不具备⼈眼可读性,为了验证序列化结果的正确性,写⼊⽅不得同时撰写反序列化程序,或提供⼀个查询平台--这⽐较费时;另⼀⽅⾯,如果读取⽅未能成功实现反序列化,这将给问题查找带来了很⼤的挑战--难以定位是由于⾃⾝的反序列化程序的bug所导致还是由于写⼊⽅序列化后的错误数据所导致。对于跨公司间的调试,由于以下原因,问题会显得更严重。
1. ⽀持不到位,跨公司调试在问题出现后可能得不到及时的⽀持,这⼤⼤延长了调试周期。
2. 访问限制,调试阶段的查询平台未必对外公开,这增加了读取⽅的验证难度。
如果序列化后的数据⼈眼可读,这将⼤⼤提⾼调试效率, XML和JSON就具有⼈眼可读的优点。
Json
js对象标记,是⼀种基于ECMAscript的⼀个⼦集,采⽤完全独⽴于编程语⾔的⽂本格式来村粗和表⽰数据的⼀种轻量化级的数据交换格式jason的数据类型
值:双引号引起来的字符串,数值,true和fales,null,对象,数组,这些都是值
字符串:由双引号包围起来的任意字符的组合,可以有转义字符
数值:有正负,有整数,浮点数
对象:⽆序键值对的集合{k,v},key必须是⼀个字符串,value可以是任意的值
数组:
有序的值的集合
格式[valn]
json模块
python⾄此少量内建数据类型到json类型的转换
常⽤⽅法:
dumps json 编码
dupm json 编码并存⼊⽂件
loads json    解码
load json    解码,从⽂件中读取数据
jason编码的数据很少落地,数据都是通过⽹络传输,传输的时候,要考虑压缩
本质上来说他就是个⽂本,是⼀个字符串,所以他的应⽤范围及其⼴泛
MessagepackPack
基于⼆进制搞笑的对象序列化类库,可⽤于跨语⾔通信
兼容json和pickle,⽐json更快速,更轻巧
原理:将⼀些可以替代的变量名,⽤ascii码来替代,从⽽⼤⼤的减少空间占⽤
安装:
使⽤pip安装:
pip install msgpack-python
使⽤⽅法:
packb 序列化对象,提供了dumps 来兼容json和pickle
unpackb 反序列化对象,提供了loads来兼容json和pickle
pack序列化对象并保存到⽂件对象,提供了dump来兼容
unpack 反序列化对象保存到⽂件对象,提供了load来兼容
MessgePack简单易⽤,且⾼效压缩,⽀持的语⾔也很多,也是⼀种序列化可选的⽅法
⽂件操作
⽂件操作
作者:⼀个⼩菜鸡
读取txt⽂件并进⾏切割
f = open(','r+',encoding='utf-8')
alpha = f.read().split(' ')
dic = { }
for k,v in enumerate(alpha):
if v in dic:
countine
el:
dic[k]=v
print(len(dic))          待续(符号没有切)
⽂件io常⽤操作:
open    打开
read      读取    read(size=-1) size表⽰读取多少个字符或字节,负数或者None表⽰读取到EOF(末尾)
write    写⼊    write(s),把字符串s写⼊到⽂件中,并返回字符的个数
clo    关闭    flush并关闭⽂件对象,⽂件已经关闭,再次关闭没有任何效果
readline    按⾏读取    read(size=-1) ⼀⾏⾏读取⽂件内容,size设置⼀次能读取⾏内⼏个字符或字节
readlines    多⾏读取(hint=-1) 读取所有⾏的列表,指定hint则返回指定的⾏数
ek    ⽂件指针操作
tell      查看当前指针位置
其他:
ekable()是否可ek
readable()是否可读
writable()是否可写
clod是否已经关闭
⽂件查看格式:
open(filename,buffering=1,encoding=None,errors=None,newline=None,clofd=True)
打开⼀个⽂件对象(流对象)和⽂件描述符,打开⽂件失败,则返回异常
⼀般⽂路由器怎么改名字 件使⽤⽅法:
f = open('test')  #打开⽂件(可以跟上相关操作)
windows :io.TextIOWrapper name='test' mode='r' encoding='cp936'
linux:      io.TexrTOWrapper name='test' mode='r' encoding='utf-8'
ad())    #读取⽂件
f.clo()            # 关闭⽂件
⽂件操作中最常⽤的就是读和写
⽂件访问的模式有两种:⽂本模式和⼆进制模式,不同模式下,操作函数不尽相同,表现的结果也不⼀样
open的参数
指定⼀个⽂件⽂明,如果不指定路径,默认是当前路径
mode模式:
open(filename,' r ')
不带参数默认只读打开
r模式只读(不可写,⽂件不存在会抛出异常)
w模式只写(不可读,⽂件存在清空内容,不存在新建⽂件)
x模式⽂件不存在,创建⽂件,并只写⽅式打开,⽂件存在,抛异常
a模式,只写打开,⽂件存在,默认在末尾追加,⽂件不存在,新建后只写打开,追加内容
r只读,wxa都是只写
wxa都可以产⽣新的⽂件,w不管⽂件在与否,都会审计过程全新内容的⽂件, a不管⽂件是否存在都能在打开的⽂件尾部追加,x必须要求⽂件事先不存在,⾃⼰造⼀个新⽂件
⽂本模式t
字符流,将⽂件的字节按照某种字符编码理解,按照字符操作,open的默认mode就是rt
⼆进制模式b
字节流,将⽂件就按照字节理解,与字符编码⽆关,⼆进制模式时,字节操作使⽤bytes类型
+
为r w a x 提供缺失的读写功能,但是获取⽂件对象依旧按照r w a x ⾃⼰的特征
+ 不能单独使⽤,可以认为他是为前⾯的模式字符做增强的功能

本文发布于:2023-05-03 04:01:08,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/853276.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:序列化   对象   数据
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图