python习题,关于文件操作的练习
习题1
有如下文件,a1.txt,里面的内容为:
老男孩是最好的学校,
全心全意为学生服务,
只为学生我未来,不为牟利.
我说的都是真的.哈哈
分别完成以下功能:
- 将源文件全部读出来并打印
- 在源文件后面追加一行内容:信不信由你,反正我信了.
- 将源文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了.
- 将源文件全部清空,换成下面内容:
每天坚持一点,
每天努力一点,
每天多思考一点,
慢慢你会发现
你的进步越来越大.
with open('a1.txt', encoding='utf-8', mode='r+') as f1:
content = f1.read()
print(f'文件内容:\n{content}')
f1.write('信不信由你,反正我信了.')
f1.flush()
with open('a1.txt', encoding='utf-8', mode='r+') as f1:
content = f1.read()
print(f'文件内容:\n{content}')
f1.write('信不信由你,反正我信了.')
f1.flush()
txt = """每天坚持一点,
每天努力一点,
每天多思考一点,
慢慢你会发现
你的进步越来越大."""
with open('a1.txt', encoding='utf-8', mode='w') as f1:
f1.write(txt)
f1.flush()
# 运行结果:
# 老男孩是最好的学校,
# 全心全意为学生服务,
# 只为学生我未来,不为牟利.
# 我说的都是真的.信不信由你,反正我信了.信不信由你,反正我信了.
# 文件内容:
# 老男孩是最好的学校,
# 全心全意为学生服务,
# 只为学生我未来,不为牟利.
# 我说的都是真的.信不信由你,反正我信了.信不信由你,反正我信了.信不信由你,反正我信了.
习题2
有如下文件,t1.txt里面的内容为:
葫芦娃,葫芦娃
一根藤上七个瓜
风吹雨打,都不怕
啦啦啦啦.
我可以算命,而且算的特别准:
上面的内容你肯定是心里默唱出来的,对不对?哈哈
分别完成下面功能:
- 以r的模式打开源文件,利用for循环遍历文件句柄
- 以r的模式打开源文件,以readlines()方法读出来,并循环遍历readlines(),并分析1与2有什么区别,深入理解文件句柄与readlines()结果的区别
- 以r模式读取'葫芦娃',前四个字符
- 以r模式读取第一行内容,并除去此行前后的空格、制表符、换行符.
- 以a+模式打开文件,先追加一行:'老男孩教育'然后在从最开始将原内容全部读取出来
with open('t1.txt', encoding='utf-8') as f1:
print(f'文件内容1:')
for line in f1:
print(f'{line}', end='')
with open('t1.txt', encoding='utf-8') as f1:
content = f1.readlines()
print(f'\n文件内容2:\n{content}', end='')
print(f'\n文件内容3:')
for line in content:
print(line, end='')
with open('t1.txt', encoding='utf-8') as f1:
content = f1.read(4)
print(f'\n文件内容4:\n{content}', end='')
with open('t1.txt', encoding='utf-8') as f1:
content = f1.readline().strip()
print(f'\n文件内容5:\n{content}', end='')
with open('t1.txt', encoding='utf-8', mode='a+') as f1:
old_position = f1.tell()
f1.write('老男孩教育')
f1.seek(0)
print(f'\n源文件内容6:')
while True:
content = f1.read(1)
new_position = f1.tell()
if new_position == old_position:
break
print(content, end='')
# 运行结果
# 文件内容1:
# 葫芦娃,葫芦娃
# 一根藤上七个瓜
# 风吹雨打,都不怕
# 啦啦啦啦.
# 文件内容2:
# ['葫芦娃,葫芦娃\n', '一根藤上七个瓜\n', '风吹雨打,都不怕\n', '啦啦啦啦.']
# 文件内容3:
# 葫芦娃,葫芦娃
# 一根藤上七个瓜
# 风吹雨打,都不怕
# 啦啦啦啦.
# 文件内容4:
# 葫芦娃,
# 文件内容5:
# 葫芦娃,葫芦娃
# 源文件内容6:
# 葫芦娃,葫芦娃
# 一根藤上七个瓜
# 风吹雨打,都不怕
# 啦啦啦啦
习题3
文件a.txt内容:每一行内容分别为商品名字,价钱,个数.
apple 10 3
tesla 100000 1
mac 3000 2
lenovo 30000 3
chicken 10 3
通过代码,将其构建成这种类型:[{'name': 'apple', 'price': 10, 'amount': 3}...]并计算出总价钱
info_list = []
with open('a.txt', encoding='utf-8') as f1:
for line in f1:
name, price, amount = line.strip('\n').split()
info = {}
info['name'] = name
info['price'] = price
info['amount'] = amount
info_list.append(info)
print('商品总览:')
s = 0
for i in info_list:
print(f'{i}')
s += int(i['price']) * int(i['amount'])
print(f'商品总价:{s}')
# 商品总览:
# {'name': 'apple', 'price': '10', 'amount': '3'}
# {'name': 'tesla', 'price': '100000', 'amount': '1'}
# {'name': 'mac', 'price': '3000', 'amount': '2'}
# {'name': 'lenovo', 'price': '30000', 'amount': '3'}
# {'name': 'chicken', 'price': '10', 'amount': '3'}
# 商品总价:196060
习题4
有文件a2.txt内容如下::
alex是老男孩python发起人,创建人.
alex其实是人妖,
谁说alex是sb?
你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质.
将文件中所有的alex都替换成大写的SB(文件的改的操作)
import os
with open('a2.txt', encoding='utf-8') as f1, \
open('a2_bak.txt', encoding='utf-8', mode='w') as f2:
for line in f1:
if 'alex' in line:
line = line.replace('alex', 'SB')
f2.write(line)
f2.flush()
os.remove('a2.txt')
os.rename('a2_bak.txt', 'a2.txt')
with open('a2.txt', encoding='utf-8') as f1:
print('变更后的源文件a2内容:')
for line in f1:
print(line, end='')
#运行结果
# 变更后的源文件a2内容:
# SB是老男孩python发起人,创建人.
# SB其实是人妖,
# 谁说SB是sb?
# 你们真逗,SB再牛逼,也掩饰不住资深屌丝的气质.
习题5
文件a3.txt内容:
name:apple price:10 amount:3 year:2012
name:tesla price:100000 amount:1 year:2013
通过代码,将其构建成这种类型数据:
[{'name': 'apple', 'price': 10, 'amount': 3, 'year': 2012}
{'name': 'tesla', 'price': 100000, 'amount': 1, 'year': 2013]
并计算出总价钱.
info_list = []
with open('a3.txt', encoding='utf-8') as f1:
for line in f1:
info = {}
for i in line.split():
key, value = i.split(':')
if value.isdecimal():
value = int(value)
info[key] = value
info_list.append(info)
print(info_list)
s = 0
for i in info_list:
s += i['price'] * i['amount']
print(f'商品的总价值为:{s}')
# 运行结果
# [{'name': 'apple', 'price': 10, 'amount': 3, 'year': 2012}, {'name': 'tesla', 'price': 100000, 'amount': 1, 'year': 2013}]
# 商品的总价值为:100030
习题6
文件a4.txt内容
序号 部门 人数 平均年龄 备注
1 Python 30 26 单身狗
2 Linux 26 30 没对象
3 运营部 20 24 女生多
......
通过代码将其构建成这种数据类型:
[{'序号': 1,'部门': 'Python', '人数': 30, '平均年龄': 26, '备注': '单身狗'}......]
info_list = []
with open('a4.txt', encoding='utf-8') as f1:
flag = True
while True:
if flag:
k = f1.readline().split()
flag = False
continue
info = {}
line = f1.readline().split()
if not line:
break
for i in range(len(k)):
if line[i].isdecimal():
line[i] = int(line[i])
info[k[i]] = line[i]
info_list.append(info)
print('部门人员信息详情:')
for i in info_list:
print(i)
#运行结果:
# 部门人员信息详情:
# {'序号': 1, '部门': 'Python', '人数': 30, '平均年龄': 26, '备注': '单身狗'}
# {'序号': 2, '部门': 'Linux', '人数': 26, '平均年龄': 30, '备注': '没对象'}
# {'序号': 3, '部门': '运营部', '人数': 20, '平均年龄': 24, '备注': '女生多'}