8.3 练习:文件操作的综合案例

本篇为练习回,来练练手吧!(我正等你陪我练几把呢

例:

需求:有一份账单文件,记录了消费收入的具体记录,内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
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,消费,正式

将内容复制保存为bill.txt

任务:

  • 读取文件
  • 将文件写出到bill.txt.bak文件作为备份
  • 同时,将文件内标记为测试的数据行丢弃

实现思路:

  • open和r模式打开一个文件对象,并读取文件
  • open和w模式打开另一个文件对象,用于文件写出
  • for循环内容,判断是否是测试不是测试就write写出,是测试就continue跳过
  • 将2个文件对象均close()

代码演示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
f = open('F:/bill.txt','r',encoding='UTF-8')
g = open('F:/bill.txt.bak','a',encoding='UTF-8')
for line in f:
    if line.count('测试') == 0:
        g.write(line)
        g.flush()
    else:
        continue
f.close()
g.close()

Licensed under CC BY-NC-SA 4.0
已存在于互联网
发表了126篇文章 · 总计210.25k字
萌ICP备20267077号
Powered by ctOS