233饿13 发表于 2015-12-18 08:57:45

Python文件操作

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
# cat readlines.py
#!/usr/bin/env python
#filereadlines

f = open('/root/test.txt', 'r')
for line in f.readlines():
    print line.strip()
f.close()
# python readlines.py
111111111111
2222222
33333333
44444444
555555555
66666666666666


页: [1]
查看完整版本: Python文件操作