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即为反序列化后的文件

浙公网安备 33010602011771号