python文件打开模式rb表示以只读模式打开文件,python基础-第四篇-4.2文件操作

基本打开模式

文件操作的流程:打开文件,操作文件,关闭文件

打开文件方法:open(文件名,模式,编码)

file = open(‘文件名’) 模式在不给值的情况下,默认为只读,而且如果是非当前的目录下文件名要加绝对路径

20180110185743722673.png

‘r’--只读

file_name.read()   一次性把指针后的内容全部读出来

20180110185743724626.png

file_name.readlines()  把指针后内容,以列表的形式每行读出

20180110185743726579.png

f = open(‘ha.log‘,‘r‘)

data1 = f.readlines()

f.close()

print(data1)

#结果为:[‘that is good!\n‘, ‘nice to meet you!\n‘, ‘hello kitty!\n‘]

f = open(‘ha.log‘,‘r‘)

f.seek(5)

data2 = f.readlines()

f.close()

print(data2)

#结果为:[‘is good!\n‘, ‘nice to meet you!\n‘, ‘hello kitty!\n‘]

file_name.readline()  每一次读一行内容

20180110185743728532.png

文件里循环读取,循环文件默认是循环行内容

f = open(‘ha.log‘,‘r‘)

for line in f:

print(line)

f.close()

#结果为:

that is good!

nice to meet you!

hello kitty!

‘r‘模式总结:只读模式在打开文件时是从头开始读,其中read()和readlines()是一次把文件所有内容都读取出来,在文件很大时,不建议这两种方法,非常占内存

而readline和循环文件是一行一行读,两次方法每次读取都是只占一行内容的内存,readline操作比较繁琐,并且你如果不知道最后一行在哪,一般容易报错,

一般用for循环

‘w’--只写

以只写模式打开时,先检测文件存不存在,不存在就创建,存在清空文件内容

20180110185743730485.png

file_name.writelines()  和只读里的readlins相对应,以列表形式写入

f = open(‘ha.log‘,‘w‘)

f.writelines([‘that is good!\n‘, ‘nice to meet you!\n‘, ‘hello kitty!\n‘])

f.close()

f = open(‘ha.log‘,‘r‘)

data = f.read()

f.close()

print(data)

结果为:

that is good!

nice to meet you!

hello kitty!

‘w’模式总结:只写模式适用于创建不存在的文件,用于清空内容再写入内容情况比较少,如果说想在文件末尾添加内容,这就涉及到我们即将讲的‘a’模式

‘a’--追加模式

打开文件时,指针跳到文件的末尾,此时执行写操作就是内容添加操作

追加模式下不可读,不存在则创建,存在则追加

f = open(‘ha.log‘,‘a‘)

print(f.tell())

f.write(‘大家好‘)

f.close()

f = open(‘ha.log‘,‘r‘)

data = f.read()

f.close()

print(data)

结果为:

48

that is good!

nice to meet you!

hello kitty!

大家好

‘x’--只写

不存在创建,存在则报错(这个模式py3新增的)    --用于判断文件存不存在非常有用

20180110185743731461.png

字节打开模式

别看我们平时操作都是能看懂的字符串,其实在程序底部都是一些计算机能识别的二进制文件,所以让我们看懂,必须经过一个编码转换区,由字节转换为字符

20180110185743733414.png

‘rb‘--字节只读模式

20180110185743734391.png

‘wb‘--字节只写模式

20180110185743736344.png

文件操作指针

file_name.seek()  指针拨到指定位置

file_name.tell()  告诉你当前指针的位置

20180110185743737320.png

r+ 读写--从0开始

w+ 写读--写把文件清空,从0开始

a+ 写读--指针从末尾开始

x+ 写读--存在报错,从0开始

20180110185743739273.png

20180110185743740250.png

with open(‘ha.log‘,‘w‘) as f:

f.writelines([‘大家好才是真的好\n‘,‘明天的太阳依旧灿烂\n‘])

#打开以a+模式,如果先写,是从当前指针开始往后覆盖内容

with open(‘ha.log‘, ‘r+‘) as f:

print(f.tell()) #0

f.write(‘早起的鸟儿有虫吃\n‘)

f.seek(0)

data3 = f.read()

print(data3)

# 结果为:

# 早起的鸟儿有虫吃

# 明天的太阳依旧灿烂

文件上下文管理

with open(’文件名‘,模式) as 文件变量:文件操作---------这种方式不用再写文件关闭了,因为这种方式在操作后会自动关闭文件

在py3还支持同时打开两个文件:with open(文件1,模式) as obj1,open(文件2,模式) as obj2:文件操作

大型文件复制:

with open(‘ha.log‘,‘r‘) as obj1,open(‘ha2.log‘,‘w‘) as obj2:

for line in obj1:

obj2.write(line)

with open(‘ha2.log‘,‘r‘) as obj2:

data = obj2.read()

print(data)

文件操作常用方法拾遗

file_name.flush()  强行把内存刷到硬盘

file_name.truncate()  保留指针前的内容

with open(‘ha2.log‘,‘a+‘) as obj1:

obj1.seek(6)

obj1.truncate()

obj1.seek(0)

data = obj1.read()

print(data) #结果为:大家好

原文:http://www.cnblogs.com/xinsiwei18/p/5551191.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值