Python入门到精通(七)——Python文件操作

本文详细介绍了Python中的文件操作,包括文件编码的概念、不同模式下的文件读取和写入方法(如只读、写入、追加),以及一个实际的账单文件处理案例。重点强调了UTF-8编码的使用和文件操作的正确流程。
摘要由CSDN通过智能技术生成

Python文件操作

一、文件的编码

二、文件的读取

1、操作汇总

2、model 常用的三种基础访问模式

三、文件的写入

四、文件的追加

五、综合案例


一、文件的编码

1、什么是编码?

  • 编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。
  • 编码有许多中,我们最常用的是UTF-8编码

2、为什么要使用编码?

  • 计算机只认识0和1,所以需要将内容翻译成0和1才能保存在计算机中
  • 同时也需要编码, 将计算机保存的0和1,反向翻译回可以识别的内容

二、文件的读取

1、操作汇总

  • name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
  • mode:设置打开文件的模式(访问模式):只读、写入、追加等。
  • encoding:编码格式(推荐使用UTF-8)
  • 多次调用时,会在上一个结尾处继续读取

2、model 常用的三种基础访问模式

练习题

通过Windows的文本编辑器软件,将如下内容,复制并保存到,文件可以存储在任意位置
 

beijing shanghai CSDN
shenzhen guangzhou CSDN
wuhan hangzhou CSDN
zhengzhou bigdata CSDN

通过文件读取操作,读取此文件,统计CSDN单词出现的次数

代码示例

# 练习
# 打开文件,以读取模式打开
f = open("F:/学习资料/Python/黑马/资料/test1.txt", "r", encoding="UTF-8")
# 方式1:读取全部内容,通过字符串count方法计数
content = f.read()
count = content.count("CSDN")
print(count)  # 4
# 方式2:一行一行读取,判断出现次数并累计
count = 0
for line in f:
    line = line.strip()  # 去除开头结尾空格和换行符
    words = line.split(' ')
    for word in words:
        if word == 'CSDN':
            count += 1
print(count)  # 4
# 关闭文件
f.close()

三、文件的写入

  • 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
  • 当调用flush()的时候,内容会真正写入文件
  • close()方法,带有flush()方法的功能,这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)
  • 文件如果不存在,使用”w”模式,会创建新文件
  • 文件如果存在,使用”w”模式,会将原有内容清空

代码示例

# 文件的写入 w
# 存在,清空重写  不存在,新建文件,写入
f = open("F:/学习资料/Python/黑马/资料/test1.txt", "w", encoding="UTF-8")
f.write('hello world')  # 内容写入到内存中
# flush刷新
f.flush()
# 关闭文件
f.close()

四、文件的追加

  • a模式,文件不存在会创建文件
  • a模式,文件存在会在最后,追加写入文件
  • 可以使用”\n”来写出换行符

代码示例

# 文件的追加 a模式
f = open("F:/学习资料/Python/黑马/资料/test1.txt", "a", encoding="UTF-8")
f.write('\n欢迎来到csdn')  # 换行追加
# flush刷新
f.flush()
# 关闭文件
f.close()

追加前

追加后

五、综合案例

练习题

有一份账单文件,记录了消费收入的具体记录,内容如下,可以将内容复制并保存为 bill.txt文件

name, date,money, type, remarks
周杰轮,2022-01-01,100000,消费,正式
周杰轮,2022-01-02,300000,收入,正式
周杰轮,2022-01-03,100000,消费,测试
林俊节,2022-01-01,300000,收入,正式
林俊节,2022-01-02,100000,消费,测试
林俊节,2022-01-03,100000,消费,正式
林俊节,2022-01-04,100000,消费,测试
林俊节,2022-01-05,500000,收入,正式
张学油,2022-01-01,100000,消费,正式
张学油,2022-01-02,500000,收入,正式
张学油,2022-01-03,900000,收入,测试
王力鸿,2022-01-01,500000,消费,正式
王力鸿,2022-01-02,300000,消费,测试
王力鸿,2022-01-03,950000,收入,正式
刘德滑,2022-01-01,300000,消费,测试
刘德滑,2022-01-02,100000,消费,正式
刘德滑,2022-01-03,300000,消费,正式

代码示例

# 综合案例
# 打开文件得到文件对象,准备读取
fr = open("F:/学习资料/Python/黑马/资料/bill.txt", "r", encoding="UTF-8")
# 打开文件得到文件对象,准备写入
fw = open("F:/学习资料/Python/黑马/资料/bill.txt.bak", "w", encoding="UTF-8")
# for循环读取文件
for line in fr:
    line = line.strip()  # 去除开头结尾空格和换行符
    # 判断内容,将满足的内容写出
    if line.split(',')[4] == '测试':
        continue
    # 将内容写出去
    fw.write(line)
    # 由于前面进行了strip操作,需要手动换行
    fw.write('\n')
# close两个文件对象
fr.close()
fw.close()  # 写出文件调用close(),会自动flush()

输出

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值