Python基础入门 --- 8.文件

文章目录

    • 第八章:
      • 8.文件
        • [8.1 文件的编码](#8.1 文件的编码)
        • [8.2 文件的读取](#8.2 文件的读取)
        • [8.3 文件的写入](#8.3 文件的写入)
        • [8.4 文件的追加](#8.4 文件的追加)
        • [8.5 文件操作综合案例](#8.5 文件操作综合案例)

第八章:

8.文件

8.1 文件的编码

编码:一种规则集合,记录了内容和二进制之间进行相互转换的逻辑。

编码存在意义:计算机只认识0和1,需要将内容翻译成0和1才能保存在计算机中,同时也需要编码将在计算机中保存的0和1,翻译会我们可以识别的内容。

计算机中有很多可用编码:如UTF-8、GBK、Big5等。

UTF-8是全球通用的编码格式,除非有特殊需要,不然一律按UTF-8格式进行文件编码。

8.2 文件的读取

三个基本操作:

  • 打开文件

  • 读写文件

  • 关闭文件

8.2.1 open()打开函数

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

name:要打开的目标文件名的字符串,可包含文件所在的具体路径

mode:设计打开文件的模式

encoding:编码格式

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

模式 说明
r 以只读方式打开文件。文件指针会仿在文件的开头。默认模式
w 以写入方式打开文件,如果文件已经存在,会从头开始编辑,原有的内容会被覆盖,如果文件不存在,会创建新文件
a 以追加方式打开文件,如果文件已经存在,新的内容会被写入已有内容之后,如果文件不存在,会创建新文件进行写入。
python 复制代码
f = open("test.txt", "r", encoding="UTF-8")
print(type(f)) # <class '_io.TextIOWrapper'>
8.2.2读取函数
read()

read()语法:文件对象.read(num)

num:从文件中读取的数据的长度,如果没传入num,会读取文件中所有的数据

python 复制代码
f = open("test.txt", "r", encoding="UTF-8")
print(f"从文件中读取2个字节的数据结果为:{f.read(2)}")
print(f"从文件中读取所有的数据结果为:{f.read()}")r)
readlines()

readlines语法:文件对象.readlines()

按照行的方式将整个文件的内容进行一次性读取,返回的是一个列表,每一行数据为一个元素。

python 复制代码
f = open("test.txt", "r", encoding="UTF-8")
lines = f.readlines()
print(f"lines的内容为:{lines}")
print(f"lines的类型为:{type(lines)}") # lines的类型为:<class 'list'>
readline()

readline()语法:文件对象.readline()

一次读取一行内容

python 复制代码
f = open("test.txt", "r", encoding="UTF-8")
line1 = f.readline()
line2 = f.readline()
line3 = f.readline()
print(f"第一行的内容为:{line1}")
print(f"第二行的内容为:{line2}")
print(f"第三行的内容为:{line3}")
for循环读取文件行

语法:for line in 文件对象

python 复制代码
for line in open("test.txt","r", encoding="UTF-8"):
    print(line)
8.2.3 文件关闭函数
close()

语法:文件对象.close()

python 复制代码
f = open("test.txt", "r", encoding="UTF-8")
f.close()

如果不调用close,同时程序并没有停止运行,该文件将一直被Python程序占用。

with open()

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

作用:在操作完成后自动关闭close文件。

python 复制代码
with open("test.txt", "r", encoding="UTF-8") as f:
    for line in f:
        print(f"每一行数据是:{line}")
8.2.4 总结:
操作 功能
文件对象 = open(name, mode, encoding) 打开文件获取文件对象
文件对象.read(num) 从文件中读取指定的数据长度,如果没传入num,会读取文件中所有的数据
文件对象.readline() 读取一行
文件对象.readlines() 读取全部行,得到列表
for line in 文件对象 for循环文件行,一次循环得到一行数据
文件对象.close() 关闭文件对象
with open() as f 打开文件,在操作完成后自动关闭close文件。
8.3 文件的写入

write()语法:文件对象.write("写入的内容")

flush()语法:文件对象.flush()

直接调用write,内容并未真正写入文件中,会积攒在程序的缓冲区中,当调用flush时,内容才会真正写入文件中。close()内置了flush功能

python 复制代码
f = open("test.txt", "w", encoding="UTF-8")
f.write("Hello Python!")
# f.flush()
f.close() # close内置了flush功能
8.4 文件的追加

通过a模式打开文件即可

  • a模式,文件不存在会创建新文件

  • a模式,文件存在的话,会在文化尾追加写入

python 复制代码
f = open("test.txt", "a", encoding="UTF-8")
f.write("\nHello world")
f.close()
8.5 文件操作综合案例

文本文件内容如下:

name,date,money,level,type

小明,2002-10-04,5000,2,正式

小王,2005-08-05,3000,1,实习

小洪,2005-04-05,3500,1,实习

小李,2005-05-05,3500,1,实习

小黑,2003-05-07,5000,2,正式

小张,2004-03-10,4000,1,实习

小刘,2003-08-18,5000,2,正式

小美,2003-10-20,4500,2,正式

需求:将文件内标记为实习的数据行丢弃

python 复制代码
fr = open("test.txt", "r", encoding="UTF-8")
fw = open("test.txt.bak", "w", encoding="UTF-8")
for line in fr:
    line = line.strip()
    if line.split(",")[4] == "实习":
        continue
    fw.write(line)
    fw.write("\n")
fr.close()
fw.close()
"\n")
fr.close()
fw.close()
相关推荐
Gentle586几秒前
labview中连接sql server数据库查询语句
数据库·labview
Gentle5862 分钟前
labview用sql server数据库存取数据到一个单元格
数据库·labview
Prejudices3 分钟前
C++如何调用Python脚本
开发语言·c++·python
Daniel 大东3 分钟前
idea 解决缓存损坏问题
java·缓存·intellij-idea
2401_857636394 分钟前
共享汽车管理新纪元:SpringBoot框架应用
数据库·spring boot·汽车
菲兹园长5 分钟前
表的设计(MYSQL)
数据库·mysql
wind瑞10 分钟前
IntelliJ IDEA插件开发-代码补全插件入门开发
java·ide·intellij-idea
HappyAcmen10 分钟前
IDEA部署AI代写插件
java·人工智能·intellij-idea
马剑威(威哥爱编程)15 分钟前
读写锁分离设计模式详解
java·设计模式·java-ee
我狠狠地刷刷刷刷刷16 分钟前
中文分词模拟器
开发语言·python·算法