文件的输入输出:
fileobj=open(filename,mode)
Moded的第一个子母表示对其的操作:
r 读模式
w 写模式,如果文件不存在的话,则创建,如果存在则重新写新内容
X 如果文件不存在的情况下,新创建并写文件
a 如果文件存在,则在末尾添加内容
Mode的第二个字母表示的是文件的类型
t 代表文本类型
b 代表二进制文件
使用write()写文本文件
>>> poem=''' there was a young lady named bright,
... whose speed was far faster than light
... in a relatived way
... '''
>>> len(poem)
95
>>> fout=open('relativity','w')
>>> fout.write(poem)
>>>
>>> fout.close()
使用read(),readline(),或者readlines()读文本文件
读取文件的最简单的方式就是使用一个迭代器,它会每次返回一行,
>>> poem=''
>>> fin=open('relativity','r')
>>> for line in fin:
... poem+=line
...
>>> fin.close()
>>> len(poem)
95
函数readlines()调用时每次读取一行,并返回单行字符串列表‘
>>> fin=open('relativity','r')
>>> lines=fin.readlines()
>>> fin.close()
>>> for line in lines:
... print line
...
there was a young lady named bright,
whose speed was far faster than light
in a relatived way
使用write()写二进制文件
>>> bdata=bytes(range(0,256))
>>> len(bdata)
1170
>>> fout=open('bfile','wb')
>>> fout.write(bdata)
>>> fout.close()
使用with自动关闭文件
Python的上下文管理器会清理一些资源,例如打开的文件,它的形式为with expression as variable
>>> poem='aaa bbb ccc ddd'
>>> with open('relativity','wt') as fout:
... fout.write(poem)
...
完成上下文管理器的代码后,文件会自动关闭。
使用seek()改变位置
Python都会跟踪文件的位置,函数tell()返回距离文件开始处的字节偏移量,函数seek()允许跳转到文件其他字节偏移量的位置,
>>> fin=open('bfile','rb')
>>> fin.tell()
0
>>> fin.seek(255)
>>> bdata=fin.read()
>>> len(bdata)
916
>>> bdata[0]
'6'
Seek()同样返回当前的偏移量
用第二个参数调用函数seek(): seek(offset:origin)
如果origin等于0,默认为0,从开头偏移offset个字节
如果origin等于1,从当前位置偏移offset个字节
如果origin等于2,距离最后结尾处偏移offset个字节