Python I/O操作
IO在计算机中指的是Input/Output也就是输入输出
凡是用到数据交换的地方 都会涉及IO编程
例如 磁盘 网络的数据传输 在IO编程中 Stream流是一种重要的概念
分为 输入流 和输出流 ,可以把 流理解为一个水管
数据相当于水管中的 水 但是只能单向流动
所以数据传输过程中 需要架设两个水管 一个负责输入 一个负责输出 这样读写就可以实现同步
--------------------
文件读写之前需要打开文件 确定文件的读写模式
open函数用来打开文件 语法如下:
open(name[.mode[.buffering]])
name 为强制性参数
mode 模式
buffering 缓冲区 参数都是可选、、
默认模式是读模式 默认缓冲区是无
-------
f=open(r'c:\text\qiye.text')
如果文件不存在的话
可以看到 No such file or directory
-------
2 文件模式
-------
r-----读模式
w----写模式
a-----追加模式
b-----二进制模式 可以添加到其他模式中使用 一般处理文本文件时候 是用不到 b参数的 处理其他类型的文件 二进制文件 如
mp3音乐或者图像 应该在模式参数中增加 b 这在爬虫处理媒体文件很常用 rb可以用来读取一个二进制文件
+------读/写模式 可以添加到其他模式中使用
--------
如果buffering参数是0 I/O是无缓冲的 直接将数据写到磁盘
如果是1 有缓冲 数据先写到内存 只有使用flush函数或者close函数 才会将数据更新到硬盘
参数大于1 的数字 代表缓冲区的大小 单位是节
-1 或者任何负数代表使用默认的缓冲区大小
---------
文件读取主要 分为 按字节读取和按行读取 常用的方法 有read() readlines() close()
f=open(r'c:\a.text')
f.read()
f.close()
一次读到内存中
最后返回的是str类型的对象
------
最后调用close() 关闭对文件的引用 文件使用完毕后必须关闭 因为文件对象会占用操作 系统资源 影响系统的 IO操作
try:
f.open(r'c:\text')
print(f.read())
finally:
if f:
f.close()
-------
上面的代码过长 python提供了一种简单的写法
使用with语句替代
with open(r'c:\a.text','r') as fileReader:
print ( fileReader.read())
-------
一次将文件读到内存 但是如果文件过大 将会出现内存不足的问题
一般对于大文件 可反复调用 read(size)方法 一次最多读取size个字节
如果是文本 调用readline()可以每次读取一行内容
调用readlines() 一次读取所有内容并按行返回列表
-------
with open(r'c:\a.text','r') as fileReader:
for line in fileReader.readlines():
print(line.strip())
--------
文件写入
-------
写文件和读文件是一样的 唯一的区别 在调用open方法时
传入标识符w或者wb表示写入文本文件 或者写入 二进制 文件、====
-----
f=open(r'c:\text','w')
f.write('qiye')
f.close()
我们可以反复调用write()方法写入文件最后用close关闭
操作系统不是立即将数据写入文件中的 而是先写入内存中缓存起来
等到有空闲的时候在写入文件中 最后使用close方法关闭文件
当然也可以用f.flush()方法 不断将数据立即写入文件 中
-------
with open(r'c:\a.text','w') as fileWriter:
fileWriter.write('qiye')
-------
在Python中对文件和目录的 操作 经常用到
os模块和shutil模块
---------