弟子规python编程游戏_Python自学之路-python文件操作

二、open函数和open with

Ⅰ、open

格式:open("路径","打开方式")

打开方式:'r'只读模式, ‘w’写模式,

‘a’追加模式 ,‘b’二进制模式,‘+’读/写模式。

例子1:向文件写入“hello world!!!”,文件不存在就创建

fh=open("d:/file1.txt","w")

words1="hello world!!!"

fh.write(words1)

fh.close()

例子2:读取d盘file1.txt文件的内容

fh2=open("d:/file2.txt","r")

data2=fh2.read()

print(data2)

>>输出 hello world!!!

例子3:统计文件中一行存在test的行数

count=0

fp=open("e:\\file.txt","r",encoding="utf-8")

lines=fp.readlines()

for i in lines:

if "test" in i:

print(i)

count+=1

print(count)

Ⅱ、with open as

open读写时,每次读写完之后,都要f.close()关闭文件,但是实际中,文件读写可能产生IOError,一旦出错,后面的f.close()就不会调用,python

中的with语句用法可以解决这个问题

with open('../dataconfig/test.json',encoding='utf-8') as f:

print(f.read())

输出结果:

hello

我们

326342

打开多个文件进行操作

with open('../dataconfig/test.json',encoding='utf-8') as f1,open('../dataconfig/test1.json',encoding='utf-8')

as f2,open('../dataconfig/test2.json',encoding='utf-8') as f3:

for i in f1:

j = f2.readline()

k = f3.readline()

print(i.strip(),j.strip(),k.strip())

三、read和readlines()

Ⅰ、read

read()将文件中的内容全部读取出来,弊端 如果文件很大就会非常的占用内存,容易导致内存奔溃

f = open('path1/小娃娃.txt',mode='r',encoding='utf-8')

msg = f.read(3)

msg1 = f.read()

f.close()

print(msg)

print(msg1)

结果:

高圆圆

刘亦菲

张柏芝

杨紫

王菲

Ⅱ、readline():readline()读取每次只读取一行

注意点:readline()读取出来的数据在后面都有一个\n

f = open('path1/小娃娃.txt',mode='r',encoding='utf-8')

msg1 = f.readline()

msg2 = f.readline()

msg3 = f.readline()

msg4 = f.readline()

f.close()

print(msg1)

print(msg2)

print(msg3)

print(msg4)

结果:

高圆圆

刘亦菲

张柏芝

杨紫

解决这个问题只需要在我们读取出来的文件后边加一个strip()就OK了

Ⅲ、readlines()

readlines() 返回一个列表,列表里面每个元素是原文件的每一行,如果文件很大,占内存,容易崩盘

f = open('log',encoding='utf-8')

print(f.readlines())

f.close()

# 结果['666666\n', 'fkja l;\n', 'fdkslfaj\n', 'dfsflj\n', 'df;asdlf\n', '\n', ]

Ⅳ、for循环读取

可以通过for循环去读取,文件句柄是一个迭代器,他的特点就是每次循环只在内存中占一行的数据,非常节省内存

f = open('../path1/弟子规',mode='r',encoding='utf-8')

for line in f:

print(line) #这种方式就是在一行一行的进行读取,它就执行了下边的功能

print(f.readline())

print(f.readline())

print(f.readline())

print(f.readline())

f.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值