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

第八章:

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以追加方式打开文件,如果文件已经存在,新的内容会被写入已有内容之后,如果文件不存在,会创建新文件进行写入。
f = open("test.txt", "r", encoding="UTF-8")
print(type(f)) # <class '_io.TextIOWrapper'>
8.2.2读取函数
read()

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

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

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

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

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

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()

一次读取一行内容

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 文件对象

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

语法:文件对象.close()

f = open("test.txt", "r", encoding="UTF-8")
f.close()

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

with open()

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

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

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功能

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

通过a模式打开文件即可

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

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

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,正式

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

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()

下一章:Python基础入门 — 9.异常、模块

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值