一、读取文件
"""
文件读取指针问题,操作的时候,不同的 read 函数,需要注释后才能读取出内容
"""
f = open('file/read_example.txt', 'r', encoding='utf-8')
print('--------------read-------------------')
content = f.read()
print(f'读取的内容是:{content}')
print('-------------readlines--------------------')
lines = f.readlines()
for line in lines:
print(line.replace('\n', ''))
print('-------------readline--------------------')
l1 = f.readline()
l2 = f.readline()
l3 = f.readline()
l4 = f.readline()
print(f'第一行:{l1}', end='')
print(f'第二行:{l2}', end='')
print(f'第三行:{l3}', end='')
print(f'第四行:{l4}', end='')
# 关闭文件
f.close()
# with open as f: 语法,自动关闭文件
with open('file/read_example.txt', 'r', encoding='utf-8') as f:
for e in f:
print(e)
文件读取练习题
文件内容如下:
文件名:worker_1.txt
itheima itcast python itheima python itcast beijing shanghai itheima shenzhen guangzhou itheima wuhan hangzhou itheima zhengzhou bigdata itheima
统计
itheima
出现的次数
with open('D:/worker_1.txt', 'r') as wf:
# 读取所有的内容
content = wf.read()
# 将 \n 替换为 ' ',并且根据 ' ' 切分到 list 内
content_list = content.replace('\n', ' ').split(' ')
# 最后通过 count 函数统计
c = content_list.count('itheima')
print(f'itheima出现了:{c}次')
二、文件写入
write = open('D:/write_example.txt', 'w', encoding='utf-8')
write.write('Hello world !!!')
write.flush()
write.close() # close 函数包含了 flush 操作
print('文件写入成功 ~')
三、文件追加
write = open('file/write_example.txt', 'a', encoding='utf-8')
for i in range(10):
write.write(f'hello {i} world !!!\n')
write.close()
print(f'文件追加完毕 ~')
四、文件操作综合案例
文件综合案例:
备份文件,将bill.txt
文件中的 “正式” 数据读取出来,
保存到bill.txt.back
文件内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,消费,正式
back_bill = []
with open('D:/bill.txt', 'r', encoding='utf-8') as bill:
bills = bill.readlines()
back_bill.append(bills.pop(0))
for b in bills:
c = b.find('正式')
if c > 0:
back_bill.append(b)
print(f'正式账单内容:{back_bill}')
with open('D:/bill.txt.back', 'a', encoding='utf-8') as back:
for bill in back_bill:
back.write(bill)
back.close()
print('账单备份完成:D:/bill.txt.back')