文件对象
处理文件的三个步骤:打开、读写、关闭。
文件读取
open内建函数
- 作为打开文件之门的“钥匙”,内建函数open() 提供了初始化输入/输出(I/O)操作的通用接口
- 成功打开文件后时候会返回一个文件对象,否则引发一个错误
- 基本语法:
file_object = open(file_name, mode='r', buffering=-1)
文件对象访问模式
文件模式 | 操作 |
---|---|
r | 以读方式打开(文件不存在则报错) |
w | 以写方式打开(文件存在则清空,不存在则创建) |
a | 以追加模式打开(必要时创建新文件) |
r+ | 以读写模式打开(参见r) |
w+ | 以读写模式打开(参见w) |
a+ | 以读写模式打开(参见a) |
b | 以二进制模式打开 |
- 文件读取
[root@room8pc16 ]# cp /etc/passwd /tmp/mima
>>> f = open('/tmp/mima') # 默认以r方式打开
>>> data = f.read() # 默认read读取全部数据
>>> print(data)
>>> data = f.read() # 因为文件指针已经到文件结尾,再读数据将是空
>>> print(data)
>>> data
''
>>> f.close()
- 重新打开文件
>>> f = open('/tmp/mima')
>>> f.read(4) # 读取4字节
'root'
>>> f.read(4)
':x:0'
>>> f.readline() # 读取到遇到的第一个\n
>>> f.readlines() # 把文件的第一行作为列表项,保存到列表中
>>> f.close()
最常用的、读取文本文件的方式是for循环遍历:
>>> f = open('/tmp/mima')
>>> for line in f:
... print(line, end='')
>>> f.close()
写入文件
write方法
- write()内建方法功能与read()和readline()相反。它把含有文本数据或二进制数据块的字符串写入到文件中去
- 写入文件时,不会自动添加行结束标志,需要程序员手工输入
>>> fobj.write('Hello World!\n')
13
writelines方法
- 和readlines()一样,writelines()方法是针对列表的操
- 它接受一个字符串列表作为参数,将它们写入文件
- 行结束符并不会被自动加入,所以如果需要的话,必
须在调用writelines()前给每行结尾加上行结束符
>>> fobj.writelines(['Hello World!\n', 'python programing\n'])
- 写文件
>>> f = open('/tmp/mima', 'w') # 文件不存在则创建,存在会清空
>>> f.write('hello world!\n')
13 # 返回写入到文件的字节数
>>> f.writelines(['2nd line.\n', '3rd line.\n'])
[root@room9pc01 ~]# cat /tmp/mima # 此时文件仍然为空的
>>> f.flush() # 立即将数据从缓存同步到磁盘
[root@room9pc01 ~]# cat /tmp/mima
hello world!
2nd line.
3rd line.
>>> f.write