Python 学习笔记

您所在的位置:网站首页 怎么看文件编码是什么 Python 学习笔记

Python 学习笔记

2023-07-05 04:26| 来源: 网络整理| 查看: 265

本章内容:针对文件的基本操作,包括文件的读取、写入、追加等。

所有相关代码可在https://github.com/hzyao/Python-Cookbook 进行查看。边学习边实操,及时挖掘真美妙!搭配食用或许口味更佳哟!

顺便再问一嘴,有多少人和我一样点开 Python 就已经在怀念 R 了!

文件操作 1 什么是编码

编码:是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。通俗来讲就是,一种翻译规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。

计算机中有许多可用编码:

UTF-8(目前全球通用的编码格式,除非有特殊需求,否则一律以 UTF-8 格式进行文件编码即可)GBKBig5……

不同的编码,将内容翻译成二进制的结果也是不同的。

💡 为什么要使用编码嘞?

因为啊,在计算机的世界里,只有 0 和 1,所以需要将内容翻译成 0 和 1 才能保存在计算机中;同时也需要编码将计算机保存的 0 和 1,反向翻译回我们人类可以识别的内容。

2 文件的读取

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

在日常生活中,文件操作主要包括打开、关闭、读、写等操作。

2.1 打开文件

open():可以打开一个已经存在的文件,或者创建一个新文件。

语法:文件对象 = open(name, mode, encoding)

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

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

注:此时的f是open函数的文件对象,对象是 Python 中一种特殊的数据类型,拥有属性和方法,可以使用对象.属性或对象.方法对其进行访问,我们在后续“面向对象”部分会进行详细学习。

# 打开文件 f = open("./data/test.txt", "r", encoding="UTF-8") # encoding 的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定 print(type(f)) 2.2 读操作相关方法

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

# 读取文件 —— 一定数据长度 print(f.read(10)) print(f.read(2)) # 如果连续调用两次read,下一次会从上次read结尾处开始读取

文件对象.readlines() 可按行把整个文件中的内容进行一次性读取,且返回的是一个列表,其中每行数据为一个元素。

# 读取文件全部行封装到列表中 —— 将全部行封装到列表中 print(f.readlines()) print(type(f.readlines()))

文件对象.readline()

# 读取文件 —— 一次读取一行内容 f = open("./data/test.txt", "r", encoding="UTF-8") print(f.readline()) print(f.readline()) print(f.readline())

for 循环读取文件行

# for循环读取文件行 f = open("./data/test.txt", "r", encoding="UTF-8") for line in f: print(line) 2.3 关闭文件

文件对象.close():关闭文件对象,也就是关闭对文件的占用。如果不调用close,同时程序没有停止运行,那么这个文件就会一直被 Python 程序占用。

# 关闭文件 f = open("./data/test.txt", "r", encoding="UTF-8") f.close()

with open:这样打开文件,可在操作完成后将其自动关闭,避免遗忘。

# with open with open("./data/test.txt", "r", encoding="UTF-8") as f: for line in f: print(line)

总结:

文件对象=open(file, mode, encoding):打开文件获得文件对象;

文件对象.read(num):读取指定长度字节,不指定num读取文件全部;

文件对象.readline():读取一行;

文件对象.readlines():读取全部行,得到列表;

for line in 文件对象:for 循环文件行,一次循环得到一行数据;

文件对象.close():关闭文件对象;

with open(file, mode, encoding)as f:通过with open语法打开文件,可以自动关闭。

# 练习:单词计数,统计文件中“xmy”出现次数 f = open("./data/word.txt", "r", encoding="UTF-8") list = f.readlines() count = 0 for line in list: for i in line.split(" "): if i == "xmy": count += 1 print(count) 3 文件的写入

使用open()的w模式进行文件写入。

文件对象.write(”写入内容”):文件写入 文件对象.flush():刷新内容到硬盘中

注:

w模式:文件不存在,创造新文件;文件已存在,清空旧文件。直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区。当调用flush()的时候,内容会真正写入文件。这样做是避免频繁操作硬盘,导致效率下降(攒一堆,一次性写磁盘)。close()内置flush()功能。 # 打开不存在的文件 f = open("./data/write.txt", "w", encoding="UTF-8") # write写入 f.write("runrunrun!!!") # flush刷新 f.flush() # close关闭 f.close() # 打开已存在的文件 f = open("./data/write.txt", "w", encoding="UTF-8") # 文件不存在,创造新文件;文件已存在,清空旧文件 f.write("yaoyaoyao!!!") f.close() # close内置flush功能 4 文件的追加

使用open()的a模式进行文件追加,其余同w。

注:

a模式,文件不存在,会创建文件(同w)。a模式,文件已存在,会在原有内容后面追加写入文件。 # 打开已存在的文件 f = open("./data/write.txt", "a", encoding="UTF-8") f.write("runrunrun!!!") f.close() f = open("./data/write.txt", "a", encoding="UTF-8") f.write("\nrunrunrun!!!") f.close()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3