IO编程

IO在计算机中指的是input/output,凡是用到数据交换的地方,都会涉及IO编程,例如磁盘、网络的数据传输,在IO编程中,流(stream)是一个重要概念,分为输入流和输出流。

(一)文件的读写

(1)打开文件

f=open(r'文件的地址',mode,buffering) 
#文件的地址(文件的名)是必须要的参数,返回一个文件对象f,mode是可选参数(默认是读模式),buffering也是可选参数,便是缓冲区,默认缓冲区是无。

  mode取值:

'r'读模式;'w'写模式;‘a'追加模式;‘b'二进制模式(可以搭配前面三种模式使用);’+‘读/写模式(可以搭配其它模式使用)

注:’b'参数,一般处理文本文件时,是用不到‘b'参数的,但处理一些其他类型的文件时(二进制文件),比如MP3音乐或图像,那么应该在模式参数中增加’b'

‘b'在爬虫处理一些媒体文件时常用,参数’rb'可以用来读取一个二进制文件。

buffering参数,如果值为0,IO操作无缓冲,直接将数据写到磁盘上,如果参数是1,IO操作就是有缓冲的,数据先写到内存里,只有使用flush()函数或close()函数才会将数据更新到硬盘,如果参数为大于1,则表示缓冲区的大小(单位为字节),-1(或者是任何负数)代表使用默认缓冲区的大小。

(二)文件的读取

文件的读取主要是分为按字节读取和按行读取。经常用到的方法是read(),readlines(),close()

f=open(r'文件地址')
f.read()
f.close()

  read()一次性将文件读到内存中,返回一个字符串对象的类型。close()关闭文件对象,文件使用完后必须关闭,因为文件占用操作系统的资源,会影响IO操作

由于文件操作会出现io异常,一旦出现异常,后面的关闭文件就不会执行,为了保证程序的健壮性,使用try  finally

try:
    f=open(r'python_file.txt')
    print(f.read())
finally:
    if f:
        f.close()

  异常的简单写法:

with  as

with open(r'python_file.txt') as fileReader:
    print(fileReader.read())

  read()一次将文件读入内存中,如果读入的文件过大,将会出现内存不足的情况,

(1)一般对于大文件,可以反复调用read(size),一次读取size个字节,

(2)对于文本文件,readline()可以一次读取一行内容,调用readlines()一次读取所有内容并返回列表,

with open(r'python_file.txt') as fileReader:
    for line in fileReader.readlines():
        print(line.strip())

(三)文件写入

‘w'写入文本文件,’wb'写入二进制文件

f=open(r'python_file.txt','w')
f.write('Goldstine!')
f.close()

  

with open(r'python_file.txt','w') as fileWriter:
    fileWriter.write('gold')

  

  (四)操作文件和目录

os,shutil模块的使用

(五)序列化操作

两个模块:cPickle和pickle,前者是c编写的,效率比后者高

导入顺序:

try:
import cPickle as pickle
except ImportError:
import pickle

  pickle实现序列化主要使用dump()和dumps()

pickle.dumps(需要序列化的文件)

通过load()和loads()实现反序列化。

f=open(.....)

d=pickle.load(f文件对象)

f.close()

d即为反序列化后的文件

posted @ 2020-09-23 23:57  goldstine  阅读(378)  评论(0)    收藏  举报