python基础——文件与IO

目录

一、打开文件

 二、文件的读取

1.read方法

 2.readlines方法

3.readline方法

 4.for循环读取文件

三、文件的写入

1.文件不存在时

2.文件存在时

四、文件的追加

五、关闭文件 

1.close方法

2.with open自动关闭文件

总结:

课后习题:

1.请通过python打开一个文本文件,并统计其中某一字符串的出现次数。

2.对一个文件进行备份,要求先读取文件,然后创建一个新文件并写入。


一、打开文件

使用open打开函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:

open(name,mode,encoding)
  • name:要打开的目标文件的文件名(或地址)
  • mode:设置打开文件的方式,只读,读写,追加等
  • encoding:打开文件的编码格式,推荐使用utf-8

文件模式mode如下表所示:


 二、文件的读取

接下来,我们重点了解一下只读模式,只读模式下有很多子功能,其中read和readlines是比较重要的两项。

1.read方法

read方法可以用于读取指定长度的内容,只需在read的参数中给定读取字符串长度(字节),就会读取相应长度的字符串。读取以后,指针会指到所读取的最后一个字符串的后面,也就是说,如果我们再一次使用read方法读取,会读取第一次读取过后,字符串中未被读取到的部分。

f = open("D:\桌面\Kiku.txt","r",encoding="utf-8")
print(f"读取10字节的内容:{f.read(10)}")
print(f"读取剩下的全部内容:{f.read()}")

文件内为从a到z的整个字母表,结果如下:

 2.readlines方法

readlines方法可以按照行的方式把整个文件中的内容一次性读取,并且返回的内容是一个列表。

readlines方法和read方法共用一个指针,也就是说,如果readlines在read使用以后再使用,会接着读取read后未读取的部分。

f = open("D:\桌面\Kiku.txt","r",encoding="utf-8")
print(f"用read读取10字节内容:{f.read(10)}")
print(f"按行读取剩下的全部内容:{f.readlines()}")

文件内为从a到z的整个字母表,结果如下:

3.readline方法

与readlines的区别就是readline一次只读取一行内容。

f = open("D:\桌面\Kiku.txt","r",encoding="utf-8")
print(f"按行读取第一行内容:{f.readline()}")
print(f"按行读取第二行内容:{f.readline()}")
print(f"按行读取第三行内容:{f.readline()}")

文件内为从a到z的整个字母表,结果如下:

 4.for循环读取文件

使用for循环,每次读取一行内容,每个line临时对象,就记录了一行的内容。

f = open("D:\桌面\Kiku.txt","r",encoding="utf-8")
for line in f:
    print(line)

文件内为从a到z的整个字母表,结果如下:


三、文件的写入

向文件中写入内容只需要以’w‘的模式打开文件,然后使用write方法即可,但是用write函数以后,不会将内容真正写入文件,而是会保存在缓冲区中,这时再使用flush函数刷新内容即可。这样做是为了避免频繁操作磁盘导致效率下降。

1.文件不存在时

打开一个不存在的文件,并向里面写入内容,这时候系统会创建一个新文件并存储所写内容。

#打开一个不存在的文件
f = open("D:\桌面\ptest.txt","w",encoding="utf-8")
f.write("Hello,world!")
f.flush()
#关闭文件
f.close()

运行程序,我们会发现在指定位置出现了一个名为“ptest”的文件,里面写入了“Hello,world!”

另:close函数中内置了flush函数,所以上例可以不用加上flush函数的调用。

2.文件存在时

如果文件存在时,向里面写入内容,系统会将原文件中的内容全部清空后再写入新的内容。

#打开一个不存在的文件
f = open("D:\桌面\python.txt","w",encoding="utf-8")
f.write("Hello,world!")
#关闭文件
f.close()

运行文件,我们会发现原文件中的内容全部消失,并被替换成了“Hello,world!”


四、文件的追加

文件的追加和文件的写入大体上一模一样,只需要再打开文件时将mode设置为“a”即可。

在执行文件的追加操作时,如果文件不存在则会新创建一个文件;如果文件存在,则在原文件后面追加内容。

#打开一个不存在的文件
f = open("D:\桌面\python.txt","a",encoding="utf-8")
f.write("Hello,world!")
#关闭文件
f.close()

我们发现,在执行追加操作时,会将新内容直接加在原内容后面,如果需要换行,可加上“\n”符。


五、关闭文件 

我们一般通过close方法关闭文件,也就是结束python对文件的占用,如果不关闭文件,系统就会一直运行,占用文件。

1.close方法

文件的关闭操作也很简单,只需要在最后使用close方法即可。

f = open("D:\桌面\Kiku.txt","r",encoding="utf-8")
for line in f:
    print(line)
f.close()

2.with open自动关闭文件

如果担心忘记关闭文件,我们可以使用with open方法让程序在代码执行完毕以后自动关闭文件,使用with open可以使代码更简洁。

with open("D:\桌面\Kiku.txt","r",encoding="utf-8") as f:
    for line in f:
        print(line)

总结:

图片来源于黑马程序员

 


课后习题:

1.请通过python打开一个文本文件,并统计其中某一字符串的出现次数。

方法一:直接通过count函数统计

#打开文件
f = open("D:\桌面\python.txt","r",encoding="utf-8")
#方法1:读取所有字符,并通过count方法统计
content = f.read()
count = content.count("Python")
print(f"Python在文件中出现了{count}次")
#关闭文件
f.close()

方法二:分割字符串后比对每一个单词是否为指定单词

#打开文件
f = open("D:\桌面\python.txt","r",encoding="utf-8")
#方法2:一行一行地读取
count = 0
for line in f:
    line = line.strip()#去除字符串中的/n
    words = line.split()#分割字符串
    for word in words:
        if word =="Python":
            count += 1
print(f"Python在文件中出现了{count}次")
#关闭文件
f.close()

2.对一个文件进行备份,要求先读取文件,然后创建一个新文件并写入。

#打开并读取原文件
fr = open("D:\桌面\python.txt","r",encoding="utf-8")
#创建或打开一个新文件用作备份文件,准备写入
fw = open("D:\桌面\python1.txt","w",encoding="utf-8")
#按行读取文件
for line in fr:
    line = line.strip()#将空格换行符剥离
#写入备份文件
    fw.write(line)
    fw.write("\n")
#关闭文件
fr.close()
fw.close()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值