python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例)
如下表
模式 | 可做操作 | 若文件不存在 | 是否覆盖 |
r | 只能读 | 报错 | - |
r+ | 可读可写 | 报错 | 是 |
w | 只能写 | 创建 | 是 |
w+ | 可读可写 | 创建 |
是 |
a | 只能写 | 创建 | 否,追加写 |
a+ | 可读可写 | 创建 | 否,追加写 |
b |
表示要读写二进制数据, 可与上面的模式组合。无b时以字符串数据形式操作 |
1.只读模式(r)一个存在的文件:
def file_operation(): with open('/wzd/test.txt', mode='r') as f: # f.write('abc') r = f.readlines() print r print '---done---' file_operation()
正常输出:
2.只读模式(r)一个不存在的文件:
def file_operation(): with open('/wzd/test001.txt', mode='r') as f: # f.write('abc') r = f.readlines() print r print '---done---' file_operation()
注意上面的文件名字变了,输出如下:
3.只读模式去写文件:
def file_operation(): with open('/wzd/test.txt', mode='r') as f: f.write('abc') r = f.readlines() print r print '---done---' file_operation()
seek
seek(offset, whence)
offset: 偏移量
whence: 表示的是从哪个位置进行偏移,
0: 表示开头, 默认值
1: 表示当前位置,
2: 表示结尾
注意, 移动的单位是byte.
所以如果是UTF-8的中文部分要是3的倍数.
通常我们使用seek都是移动到开头或者结尾.
seek(0, 0): 移动到开头
seek(0, 2):移动到结尾