Python 学习之文件对象的属性和方法简介
python的文件处理和相关输入输出能力。介绍文件对象(它的内建函数,内建方法和属性),标准文件,同时讨论文件系统的访问方法,文件执行,以及相关文件模块。
一、内建函数open
语法:file_object = open(file_name,access_mode='r',buffering=-1)
file_name 要打开的绝对路径或者相对路径文件名
access_mode 处理文件的模式,常规的模式有r、w、a、r+、w+、a+。其中r模式的前提是系统本身存在该文件,读取模式。w模式表示写模式,并且会将文件内容清空,a模式表示追加模式
buffering 可选参数,0表示不缓冲,1表示缓冲一行数据
二、文件内建方法:
1、输出
f1.read()
该方法用来直接读取字节到字符串中,可以指定读取数目,默认是文件将被读取直至末尾,例如
>>> f1 = open('/var/log/messages','r')
>>> f1.read()
'Dec 24 09:43:15 xiangys0134_1 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="983" x-info="http://www.rsyslog.com"] rsyslogd was HUPed\nDec 24 20:45:50 xiangys0134_1 kernel: hrtimer: interrupt took 2068298 ns\nDec 24 22:14:08 xiangys0134_1 abrt: detected unhandled Python exception\n'
readline()
该方法用来读取文件的一行
>>> f1 = open('/var/log/messages','r')
>>> f1.readline()
'Dec 24 09:43:15 xiangys0134_1 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="983" x-info="http://www.rsyslog.com"] rsyslogd was HUPed\n'
f1.readlines()
该方法用来将读取的所有行作为一个字符串列表返回
>>> f1 = open('/var/log/messages','r')
>>> f1.readlines()
['Dec 24 09:43:15 xiangys0134_1 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="983" x-info="http://www.rsyslog.com"] rsyslogd was HUPed\n', 'Dec 24 20:45:50 xiangys0134_1 kernel: hrtimer: interrupt took 2068298 ns\n', 'Dec 24 22:14:08 xiangys0134_1 abrt: detected unhandled Python exception\n']
next()
该函数主要是用来逐行读取
>>> f1.next()
'Dec 24 09:43:15 xiangys0134_1 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="983" x-info="http://www.rsyslog.com"] rsyslogd was HUPed\n'
>>> f1.tell()
368
>>> f1.next()
'Dec 24 20:45:50 xiangys0134_1 kernel: hrtimer: interrupt took 2068298 ns\n'
>>> f1.next()
'Dec 24 22:14:08 xiangys0134_1 abrt: detected unhandled Python exception\n'
>>> f1.next()
'Dec 25 06:12:51 xiangys0134_1 abrt: detected unhandled Python exception\n'
>>> f1.next() //注意:如果已经读取到末尾行再用这个方法就会返回错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
2、输入
write()
该方法会将文件里之前的内容清空。
>>> f1 = open('/tmp/messages','w')
>>> f1.write('test\nffffff\n')
>>> f1.close()
三、文件迭代
1、for循环迭代,使用函数eadlines()
>>> f1 = open('/tmp/messages','r')
>>> lines = f1.readlines() //注意:这种方法如果文件内容非常多的话,不建议这么操作
>>> for i in lines:
... print i,
...
Dec 24 09:43:15 xiangys0134_1 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="983" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Dec 24 20:45:50 xiangys0134_1 kernel: hrtimer: interrupt took 2068298 ns
Dec 24 22:14:08 xiangys0134_1 abrt: detected unhandled Python exception
Dec 25 06:12:51 xiangys0134_1 abrt: detected unhandled Python exception
2、文件迭代器进行迭代