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模块

---------

 

posted @ 2018-07-04 15:59  duxiao123  阅读(1099)  评论(0编辑  收藏  举报