IO编程是每一种语言中都必不可少的,Python也不例外,输入输出是应用程序和计算机之间进行数据交换的方式,程序在运行时候数据在内存中停留,由CPU来进行计算,设计数据交换的地方,通常是磁盘,网络等。IO大的方面可以分为同步IO和异步IO,同步IO情况下,CPU需要等待IO完成之后才可以进行其他的操作,异步IO不需要CPU进行等待。所以异步IO的效率比同步要高一点,当然编程实现也比同步复杂一些,在本文只介绍同步IO。
1 文件读写
文件读写是IO最为常见的方式,Python内置了读写文件的函数。通过读写文件的方式在磁盘上进行读写功能在底层都是由操作系统来完成的,所以,读写文件就是请求操作系统打开一个文件对象,然后,通过操作系统提供的接口来进行文件读取。
1.1 读文件
在Python中读取文件的形式如下:
f=open('D:/p.txt','r')
其中r表示读的意思,如果打开的文件不存在的话,会提示错误。打开文件之后,可以调用read()方法来读取文件中的内容,read将文件中的所有内容一次性的读取到内存中去,read(size)方法可以指定一次读入的字节数,readline()方法每次读取一行,readlines()将文件按照行读入存储在列表中,文件读取完成之后,要调用close()方法关闭文件。由于文件在读写时候可能会发生错误,一般用try......finally语句来实现。
try:
f = open('D:/p.txt', 'r')
print(f.readline())
finally:
f.close()
上述表达的形式也可以用with语句来实现,with语句在实现时候更为简单,可以自动的执行文件关闭操作。
with open('D:/p.txt','r') as f:
print(f.readline())
如果读取的是像图片,视频这样的二进制文件的话,用rb来替代r即可。
1.2 写文件
写文件和读文件的形式是一样的,区别就是在调用open函数的时候,传入标识符w或者wb表示写文本或者写二进制文件。
f=open('D:/p.txt','w')
f.write('python')
f.close()
同样可以用with语句来替代try语句
with open('D:/p.txt','w') as f:
f.write('python')
2 操作文件和目录
Python通过内置的os模块直接调用操作系统提供的接口函数。操作文件目录的函数一部分在os模块中,一部分在os.path中。
3 序列化
程序在执行的过程中的时候,所设计的变量都是在内存中,在程序运行期间,可以根据需要来对变量进行修改,但是一旦程序结束,内存空间别收回,
如果没有将修改的变量保存在磁盘上,下次程序重新运行时候变量还是未修该的变量。将变量从内存中变成可存储或传输的过程称之为序列化,在Python
中叫做picking,序列化之后,就可以将序列化的内容写入磁盘,或者通过网络传输到别的机器上。反过来,将序列化的对象重新读入到内存中的过程称之
为反序列化。
序列化一个字典对象并将其写入文件当中
import pickle d=dict(name='Tom',age=12) print(pickle.dumps(d)) with open('D:/p.txt','wb') as f: pickle.dump(d,f)
从文件当中反序列化:
with open('D:/p.txt','rb') as f: d=pickle.load(f) print(d)