2019/08/28 python文件对象(04)

pyton3:
内存对象:
基本数据类型:
Intergral浮点型,字符型;
组合数据类型:
序列:列表、元组、字符串字面量
字典
集合

对象分为两类,
可变对象:只要是列表,字典
不可变对象:不支持原处修改

列表复制:潜复制(复制传递的是地址),深复制(深复制传递的是内容,直接复制的对象)
id(),type()类型,
两个类型的比较就有三种,
比较内部数值等同于否,比较二者是否统一对象,二者类型是否一样

对象式编程,类都有类属性和类方法构成,数据就是类属性赋值以后得到的,任何类调用的接口应该都是相同的
每个类都有属性和方法
比如序列,就支持切片操作,对字符串,大小写转换

强类型,是严格区分数据类型的,变量名没有类型,只有对象才有

流程控制机制:
选择:
if boolexpr1:
缩进4个字符,长度相同
suite1 分支1
elif boolexpr2:
.。。
else
suiteN
循环:
while boolexpr:
suite
else:
else_suite
else语句看专门用来循环收尾的,只有非正常中止,就不执行

for 循环一般是遍历可迭代对象来完成循环

for expr in iter:
suite
else:
else_suite

if boolexpr1: break 可以满足时才break
if boolexpr2: continue
pass 占位的’

在这里插入图片描述

列表解析,可以根据某个循环表达式(迭代的循环表达式)来生成列表
[ expression for x in iter If condition ],如果一不小心生成巨大列表,内存会很快耗尽,避免出现这样的情况还能实现使用 生成器,放在小括号中
( expression for x in iter If condition )一次调用只返回一个元素,下一个,生成器返回的是一个生成器对象的地址,应该把这个地址的变量,用变量名保存下来,通常使用
var变量= ( expression for x in iter If condition )
以后每次获取数据可以
var.next()

导入模块
import platform,import,copy

文件:是基于内部的io机制来实现控制的,文件存储在文件系统之上,在文件分区之上,在文件系统组织好。这个就是block,这个block可能是连续,也可能是不连续,在文件系统的组织级别,
任何能够被存储在磁盘上的数据,一定都是可流式的数据,能01010101
从文件的最开始到最尾部,整个数据流,存满第一个块,存第二个
windows用\n换行符,linux用的$行结束符,cat less都能识别换行
在磁盘上其实都是数据流,每个文件都是一个存储区域,
python访问也式要从磁盘读入到内存
在这里插入图片描述
有个内建函数open
在这里插入图片描述在这里插入图片描述
**指明打开方式,权限模型,可读写,可只读打开,encoding 编码格式,buffering是否启用缓冲功能,errors,newline什么方式运行,closefd关闭的文件描述符,
**在这里插入图片描述在这里插入图片描述
trancating the file first 把原来的覆盖了,清空源文件,类似覆盖保存
在这里插入图片描述
创建一个新文件并以写方式打开
在这里插入图片描述
追加在这里插入图片描述
二进制格式
在这里插入图片描述
文本模式
在这里插入图片描述
可同时读和写在这里插入图片描述在这里插入图片描述

在这里插入图片描述
文件:
open(),创建一个文件对象:(支持文件类的所有操作,这就是新的对象)
任何虚拟文件或磁盘上的文件都可以通过python的文件接口来访问,也可以通过url指定的文件打开
opne提供了初始化IO的通用接口,打开成功 ,就会返回一个文件对象,既然式对象,所以就是一个地址,可以用变量来引用
在这里插入图片描述
支持很多方法 close关闭文件,readline读取行, tell告诉状态在这里插入图片描述
读到尾部就中止,
可以使用seek把指针移到第一行去
读完以后关闭close
readline一次返回所有行,以列表形式返回的,一行当作一个元素
在这里插入图片描述
文件:
open(),创建一个文件对象:
file_object对象=open(’/path/to/file,‘mode’,buffering=)
访问模式:
r只读
w 覆盖写
a 追加
+ 可读可写
r+以读的方式打开,但实际能读能写
w+写模式打开,其实能读能写
a+ 追加模式打开,其实可读可写
b:二进制格式
t:文本格式,默认
rb:二进制格式的读
wb:二进制格式的写
ab:
rb+ 二进制的读模式打开,但是支持读写
wb+
ab+

缓冲:0表示禁止缓冲,1只缓冲一行,2+缓冲2行在这里插入图片描述
要想写数据,需要用指定方式打开

文件方法:
f1.close(0) 关闭文件
f1.fileno() 返回文件的描述符
f1.flush(0 缓冲数据刷写到文件系统,刷写文件的内部缓存区
f1.isatty() 判断f1是否为tty设备
f1.next()一次返回一行,可迭代对象
f1.readline()返回整个文件
f1.readlines()
f1.seek(off(表示offset),whence=0(表示移动指针从指定的whence开始,移动多少个字节))谁当偏移指针,
在文件中移动文件指针,从whence指定的位置开始,偏移offset个字节;
whence取值有三个:
0:文件头
1:当前位置
2:文件尾
在这里插入图片描述在这里插入图片描述
第一个0表示偏移0个字节,从文件首部偏移0个字节,第一行第一个字符在这里插入图片描述
告诉你当前指针在什么地方,在第几个字节,再回到原来,再偏移16个字节,在这里插入图片描述文件方法:
f1.close(0) 关闭文件
f1.fileno() 返回文件的描述符
f1.flush(0 缓冲数据刷写到文件系统,刷写文件的内部缓存区
f1.isatty() 判断f1是否为tty设备
f1.next()一次返回一行,可迭代对象
f1.readline()返回整个文件
f1.readlines()
f1.seek(off(表示offset),whence=0(表示移动指针从指定的whence开始,移动多少个字节))谁当偏移指针,
在文件中移动文件指针,从whence指定的位置开始,偏移offset个字节;
whence取值有三个:
0:文件头
1:当前位置
2:文件尾
f1.write(STR):向文件写入数据
f1.writeline(SEQ) 向文件写入字符串序列,序列就是SEQ表示的序列,可迭代对象,一次把多行写进去
f1.read()

刚才的文件是读方式打开,not writeable
需要close ,重新打开一次, w写模式打开
在这里插入图片描述
告诉你写进去11个字节,虽然提示写进去了,但是还在缓冲区里,需要flush一下在这里插入图片描述在这里插入图片描述
close就可以关闭了在这里插入图片描述在这里插入图片描述
一旦程序文件运行,默认打开三个文件,标准输入,标准输出,错误输出
stdin,stdout,stderr
可以用system模块来访问,每个模块都有help,查看帮助
在这里插入图片描述
很多模块也有内建的doc,不过现实不够美观,可以用print在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
**文件操作一般用两个模块来实现:
os:(os有很多子模块)
os.path:对路径操作 **

os模块
文件处理:
mkfifo()/mknod()创建匿名管道文件
remove()删除文件的
rename()重命名
unlink()删除链接文件
stat()获取文件状态信息
symlink()创建符号链接
utime()更新时间戳
tmpfile()创建并打开临时文件
walk()生成目录名
chdir()约等于cd
chroot()约等于chroot
listdir()于等于ls
getcwd()获取当前目录pwd
mkdir()创建目录/makedirs ()一次创建多个目录
rmdir()删除目录/removedirs()一次删除多个目录
access()检验权限模式
chmod()
chown()改变所属主和组
umask()设置umask
open()底层打开方式
read()/write()写出数据到文件

在这里插入图片描述
专门对文件路径处理的。os.path模块:
basename()基名
dirname()路径名
getatime()获取最近一次的访问 时间
getmtime
getctime
exits()判定文件是否存在 类似bash -e
isabs()判断是不是绝对路径
ISdir()判断是否目录
Isfile()判断是不是一个文件
Islink()判断是不是链接
Ismount()判断是不是挂载点
samefile()是不是指向同一个文件
这些导入某块都可以直接使用

写代码也是临摹开始,一天保证1000行代码

**持久存储:
数据序列化(数据扁平化):任何对象或者过程时编程的数据,都需要数据流失化,然后再硬盘上组织起来,这就需要数据序列化工具
主要实现将比基于类型复杂的对象,(不是简单的字符串,整形,而是一个自定义类(年龄,性别)),将这些对象转换成一个二进制数据集合以便使得能够保存起来或通过网络发送,然后再需要时,能够重新将数据集合还原回,原来的对象格式
python当中有模块专门完成对象序列化,有2个模块
1.pkckle,2.marshal,完成数据序列化,并实现持久存储 (简单存储为文件对象的)
marshal只能针对简单的python对象,整形,字符串之类
pkckle可以处理递归对象,功能强大一点
还有其他模块
dbhash/dbm/gbdm 基于dbm格式来管理数据
shelve **在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值