Python第八章节——文件

发布于:2025-03-20 ⋅ 阅读:(20) ⋅ 点赞:(0)

一.文件编码

众所周知,在计算机的眼中只能识别0和1,那么我们的那些文件是怎么被计算机识别并正确存储在硬盘中的呢?

答案则是我们是使用编码技术将文件内容翻译成0和1存入硬盘中的

1.编码技术

概念:即翻译的规则,记录了如何将内容翻译成二进制以及如何将二进制翻译回可识别内容

现存的我们经常看到的编码方式有UTF-8,GBK,Big5等,而在不同的编码方式下将内容翻译成二进制所得出的结果也是不同的(这也是加密的原理)

二.文件的读取操作

1.文件

概念:

一篇文章,一段视频,一个可执行程序都可以被保存为一个文件并赋予一个文件名,操作系统以文件为单位管理磁盘中的数据,一般来说文件可分为文本文件,视频文件,音频文件,图像文件等等

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

文件的操作步骤:

(1).打开文件

(2).读写文件

(3).关闭文件

注意:可以只打开和关闭文件但是不对其进行任何读写

2.open()打开函数

在Python中我们可以使用open函数打开一个已经存在的文件或者创建一个新文件,语法为:

open(name, mode, encoding)
# 其中name是要打开的目标文件名的字符串
# mode是设置打开文件的模式(只读,写入等等)
# encoding是编码格式(大部分时候为UTF-8)

open函数的使用实例为:

f = open('test.txt', 'r', encoding = "UTF-8")
# encoding并不能看它的位置是第三位就直接在第三位上填上参数,需要使用关键字encoding直接指定参数

在这里创建的‘f’是open函数的文件对象,属于Python中的一种特殊的数据类型,拥有属性和方法,可以使用其他方式对其进行访问

3.读操作的相关方法:

(1).read():

文件对象名.read(num)
# 其中num表示要从文件中读取的数据的长度(单位是字节),如果是空参构造read(),那么就表示读取文件中所有的数据

(2).readlines():

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

f = open('test.txt')
content = f.readlines()
# 此时在我的content中的数据为["A\n", "B\n", "C\n", "D"]

print(content)

# 使用完后记得关闭
f.close()

(3).close():

我们每次在使用完文件之后记得使用close方法关闭文件对象,即关闭对文件的占用,如果不调用close方法,同时没有停止程序的运行,那么这个文件将会一直被Python程序占用

(4).with open语法:(避免忘写close方法)

with.open("test.txt", "r") as f:
    f.readlines()
# 通过在with open的语句块中对文件进行操作,一旦脱离语句块,即操作完成后就会自动close关闭文件

4.写操作的相关方法:

(1).简单的写操作

f = open("test.txt", "w")
f.write("hello world")
f.flush()
# 我们在test.txt文件中写入了hello world这一字符串

注意:当我们直接调用write时内容并未真正写入文件,而是会积攒在程序的缓冲区中,直到我们调用flush方法之后内容才会真正写入文件,这样做的意义在于避免频繁地操作硬盘导致效率下降

同时如果我们记得在最后使用完文件对象之后使用掉close方法关闭的话同样会将内存中的内容写入到硬盘的文件中去(close方法内置了flush的功能)

(2).注意事项:

在open文件为w(写模式)时,若文件在给出的地址上不存在那么就会创建一个新文件

如果文件存在则会用我们输入的内容覆盖文件中原有的内容

三.文件的追加写入操作

1.追加写入的简单案例:

# 通过a(追加)模式打开文件
f = open("D:\\桌面\\test\\file1.txt", "a")
f.write("hello world")
f.flush()
# 在a(追加模式)下,若文件不存在则会创建文件,如果文件存在则会在文件的最后追加写入我们想要用write方法写入的内容

2.注意事项:

(1).追加写入文件使用open函数的"a"模式进行写入

(2).在追加模式下写入内容,若文件不存在则会创建新文件,若文件存在则会在原有内容后面继续写入

(3)."\n"为换行符,可以用换行符来实现换行操作

四.对于有序文件内容的一些小小的使用方式

我们曾经学过使用strip()函数来去除一段字符串前后的空格和回车换行符,以及使用split()函数以空格或其它的符号为界对内容进行分割,那么分割之后它们会是以什么方式存在的呢?

实际上,它们以列表的方式存在,那么我们就自然而然的联想到可以使用下标的方式寻找有序数据中的某一段数据

比如:

# 若文件内容为以下:
# A 100 90 80
# B 70 60 50
# C 40 30 20
# D 10 5 0
f = open("test.txt", "r")
for line in f:
    # 去除前后的空格以及换行符
    line = line.strip()
    # 取得我们想要的位置的内容
    if line.split(" ")[1] == "100":
        #若这一行内容的二号位为100则将这一行数据打印出来,打印出的是A行数据
        print(line)