文件对象就是IO管理器在内存中表示一个已打开的对象的数据结构,简单来说,如果你想对文件进行操作,就必须先要有一个文件对象。Python中,可用内建函数open()来创建一个文件对象,Python也建议使用open()(When opening a file, it’s preferable to use open() instead of invoking the file constructor directly)打开一个文件。
打开一个文件失败时,会出发IOError异常,open(name[,mode[,buffering=-1]])函数有三个参数,name为想要打开文件的文件名,mode是打开文件的模式,可为 w , r , a 等值,分别表示可读,可写,追加。buffering表示缓冲方式,值为0表示不缓冲,为1表示缓冲一行数据,其他任何正数表示缓冲区大小(bytes),小于0表示或缺省时表示运用系统默认的缓冲方式。
文件操作主要是读和写,在此围绕read()和write()学习Python对文件的操作。
read([size=-1]):size缺省或为负数时,读取全部字节,
#-----------#
# 输 入
#-----------#
# read([size=-1])):缺省或为负数时,文件被读至末尾,否则最多读取size个字节,以字符串返回读取部分
#**# 当文件很大是,该方法会很占用内存
# readline([size=-1]):size为负或缺省时读取至下一个行结束符处,返回包含行结束符的字符串,
# 否则返回最多size字节的不完整行
# readlines([size=-1]):返回每行作为元素的*字符串列表*,当size>0时,每行大约有size字节数据
#-----------#
# 输 出
#-----------#
# write(str):将字符串写入到文件中
# writelines(sequence):将系列写入到文件中,不会自动添加换行符
下面给出一个Python操作文件的小实例
#_*_encoding:utf8_*_
import os
'''
从from.txt中读取数据,打印到控制台,
把读出的数据写入到to.txt中
'''
def fileDemo():
# os.getcwd():当前路径
# os.sep:python跨平台的路径名分隔符
ffile = os.getcwd() + os.sep + 'from.txt'
# print ffile
tfile = os.getcwd() + os.sep + 'to.txt'
# print tfile
fofile = open(ffile,'r')
#文件对象属性
#fofile.encoding:文件使用的编码
#fofile.closed:文件是否关闭
#fofile.mode:打开文件的模式
#fofile.name:文件名
tofile = open(tfile,'w')
'''
文件迭代,意味着用户不必调用readxxx()方法
就可以在for循环里迭代文件的每一行
文件迭代更高,读写代码更简单
for eachline in f:
...
'''
for line in fofile:
print line,
#写入到to.txt
tofile.writelines(line)
#操作完文件时,一定记得关闭文件
fofile.close()
if __name__ == '__main__':
fileDemo()
控制台打印效果:
to.txt中的呢
越发觉得简单高效了