Python中文件操作(读、写、关闭)

目录

一.什么是文件

二.python文件操作

1.open()打开函数

 注意

mode常用的三种基础访问模式

2.读操作相关方法

read()方法:

readlines()方法:

 readline()方法

 for循环读取文件行

 3.close()关闭文件对象

操作汇总

实例

三.写操作快速操作

 注意

 

一.什么是文件

内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U盘等设备。为了便于数据的管理和检索,引入了“文件”的概念。
一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。一般来说,文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别。

二.python文件操作

想想我们平常对文件的基本操作,大概可以分为三个步骤(简称文件操作三步走):

  • 打开文件
  • 读写文件
  • 关闭文件

注意

可以只打开和关闭文件,不进行任何读写

1.open()打开函数

语法:open(name, mode, encoding)
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式):只读、写入、追加等。
encoding:编码格式(推荐使用UTF-8)

演示

f =open('D:/ceshi.txt','r',encoding='UTF-8')
print(f.read())

结果是

 注意

要用‘/’而非‘\’
此时的`f是`open`函数的文件对象,对象是Python中一种特殊的数据类型,拥有属性和方法,可以使用对象.属性或对象.方法对其进行访问.

mode常用的三种基础访问模式

模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

2.读操作相关方法

read()方法:

文件对象.read(num)
num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

readlines()方法:

readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

演示

f =open('D:/ceshi.txt','r',encoding='UTF-8')
print(f.read(10))
print("---------------")
print(f.readlines())

结果是

 readline()方法

一次读取一行

演示

f =open('D:/ceshi.txt','r',encoding='UTF-8')
print(f"第一行是{f.readline()}")
print("---------------")
print(f"第二行是{f.readline()}")
f.close()#关闭文件

 结果是

 for循环读取文件行

演示

f =open('D:/ceshi.txt','r',encoding='UTF-8')
i=0
for line in f:
    i+=1
    print(f"第{i}行的内容是:{line}")

 结果是

 3.close()关闭文件对象

f = open("python.txt","r")
f.close()
#最后通过close,关闭文件对象,也就是关闭对文件的占用
#如果不调用close,同时程序没有停止运行,那么这个文件将一直被Python程序占用。

with open 语法

with open("python.txt", "r") as f:
        f.readlines()
#通过在with open的语句块中对文件进行操作
#可以在操作完成后自动关闭close文件,避免遗忘掉close方法

操作汇总

操作功能
文件对象= open(file, mode, encoding)打开文件获得文件对象
文件对象.read(num)读取指定长度字节不指定num读取文件全部
文件对象.readline()读取一行
文件对象.readlines()读取全部行,得到列表
for line in文件对象for循环文件行,一次循环得到一行数据
文件对象.close()关闭文件对象
with open() as f通过with open语法打开文件,可以自动关闭

实例

将下内容复制到tes.txt文档中

There are moments in life when you miss someone so much that you just want to pick them from your dreams and hug them for real! Dream what you want to dream;go where you want to go;be what you want to be,because you have only one life and one chance to do all the things you want to do.
  May you have enough happiness to make you sweet,enough trials to make you strong,enough sorrow to keep you human,enough hope to make you happy? Always put yourself in others’shoes.If you feel that it hurts you,it probably hurts the other person, too.

通过文件读取操作,读取此文件,统计to单词出现的次数

代码

f =open('D:/ceshi.txt','r',encoding='UTF-8')
#法1
content = f.read()
count = content.count("to")
print(f"单词to的数量是:{count}")
f.close()
#法2
# count=0
# for line in f:
#
#     line = line.strip( )#除去开头和结尾的空格以及换行符
#     words = line.split(" ")
#     print(words)
#     for word in words:
#         if word == "to":
#             count+=1
#
# print(f"单词to的数量是:{count}")
# f.close()

三.写操作快速操作

演示

 注意:
直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
当调用flush的时候,内容会真正写入文件
这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)

演示

 

 注意

  • wirte(),写入内容
  • flush(),刷新内容到硬盘中
  • w模式,文件不存在,会创建新文件,文件存在,会清空原有内容
  • close()方法,带有flush()方法的功能

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳862

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值