文件操作笔记

一.文件编码概念

1.编码技术

即翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容
图文演示:
在这里插入图片描述
计算机有许多可用编码:UTF-8(通用) GBK Big5等,不同的编码,将内容翻译成二进制也是不同的
要使用正确的编码,才能对文件进行正确的读写操作

二.文件的读取操作

1.什么是文件
在这里插入图片描述
2.文件操作三步走
1 打开文件
2 读写文件
3 关闭文件
3.open()函数
可以打开一个已存在的文件,或者创建一个新文件
语法:open(name,mode,encoding)
name:是要打开目标的文件名的字符串(可以包含文件所在具体路径)
mode:设置文件打开的模式(访问模式):只读(r),写入(w),追加(a)等
在这里插入图片描述

encoding:编码格式(推荐使用UTF-8)
如:

f = open("D:\cs.txt", 'r', encoding="UTF-8")

encoding用关键字传参是因为他不是在第三位,不能用位置传参,因为在encoding前还有一个buffering

def open(
    file: _OpenFile,
    mode: OpenTextMode = ...,
    buffering: int = ...,
    encoding: str | None = ...,
    errors: str | None = ...,
    newline: str | None = ...,
    closefd: bool = ...,
    opener: _Opener | None = ...,
) -> TextIOWrapper: ...

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

f = open("D:\cs.txt", 'r', encoding="UTF-8")
print(f"{f.read(8)}")

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

注:读取文件的时候,只要打开了那个文件,因为来自同一个文件对象后面不管用什么方法,都是接续上一次读取文件的方法

f = open("D:\cs.txt", 'r', encoding="UTF-8")
print(f"{f.read(8)}")
print(f"{f.read()}")
lines = f.readlines()
print(lines)

在这个代码中,第二个读的指令是接着第一个读,最后一个lines的输出是个空列表

6.readline()方法:一次读取一个内容

f = open("D:\cs.txt", 'r', encoding="UTF-8")
for x in range(1, 3):
    print(f"{f.readline()}")
f.close()  # 关闭文件

7.for循环读取文件行

for x in open("D:\cs.txt", 'r', encoding="UTF-8"):
    print(x)

每一个x临时变量,就记录了一行数据

8.close():关闭文件
如果不关闭文件,同时程序没有停止运行,那这个文件会被python程序一直占用

f = open("D:\cs.txt", 'r', encoding="UTF-8")
f.close()  # 关闭文件

9.with open()语法:在操作之后自动关闭文件,避免忘记

f = open("D:\cs.txt", 'r', encoding="UTF-8")
with open("D:\cs.txt", 'r', encoding="UTF-8"):
    for x in f:
        print(x)

三.文件的写入

示例代码:

# 打开文件
f = open("D:\cs.txt", 'w', encoding="UTF-8")
# 文件写入
f.write("出必还愿")
# 内容刷新
f.flush()
f.close()

注:
直接调用write,内容并未写入文件中,而是会积攒在文件的内存中,称之为缓冲区
当调用flush的时候,内容会真正写入文件
这样做避免频繁操作硬盘,导致效率下降(攒一堆,一次性写入硬盘)
close内置了flush的功能,因此有close可以不需要flush
文件存在会将原文件的内容清空,再写入;文件不存在会将创建新文件,再写入

四.文件的追加写入

只需将”w”改为“a”模式,其他操作一样
文件存在会在原文件的内容后写入;文件不存在会将创建新文件,再写入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值