open的几种模式
r+ 以读写模式打开
w+ 以读写模式打开
a+ 以读写模式打开
rb 以二进制读模式打开
wb 以二进制写模式打开
ab 以二进制追加模式打开
rb+ 以二进制读写模式打开
wb+ 以二进制读写模式打开
ab+ 以二进制读写模式打开
使用'w',文件若存在,首先要清空,然后重新创建,
使用'a'模式,把所有要写入文件的数据都追加到文件的末尾,即使你使用了seek()指向文件的其他地方,如果文件不存在,将自动被创建。
打开文件
>>> f = open('test.txt', 'r')
一次全部读取
>>> f.read()
'111111111111\n2222222\n33333333\n44444444\n555555555\n66666666666666\n'
查看当前所在文件位置
>>> f.tell()
64
回到文件开头
>>> f.seek(0)
>>> f.tell()
0
每次读取一行
>>> f.readline()
'111111111111\n'
>>> f.readline()
'2222222\n'
>>> f.readline()
'33333333\n'
返回文件的下一行,或在没有其他行时引发StopIteration异常
>>> f.next()
'66666666666666\n'
>>> f.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
全部读取
>>> f.seek(0)
>>> f.tell()
0
>>> f.readlines()
['111111111111\n', '2222222\n', '33333333\n', '44444444\n', '555555555\n', '66666666666666\n']
查看文件名字
>>> f.name
'test.txt'
关闭文件
>>> f.close()
Python引入了with语句来自动帮我们调用close()方法,不必使用f.close()
你可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。
忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句保险。
>>> with open('test.txt', 'r') as f:
... print f.read()
...
111111111111
2222222
33333333
44444444
555555555
66666666666666
二进制文件
前面讲的默认都是读取文本文件,并且是ASCII编码的文本文件。要读取二进制文件,比如图片、视频等等,用'rb'模式打开文件即可:
>>> f = open('/root/test.jpg', 'rb')
>>> f.read()
'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 十六进制表示的字节
strip()去掉换行符\n
[root@python ~]# cat readlines.py
#!/usr/bin/env python
#file readlines
f = open('/root/test.txt', 'r')
for line in f.readlines():
print line.strip()
f.close()
[root@python ~]# python readlines.py
111111111111
2222222
33333333
44444444
555555555
66666666666666