python习题,关于文件操作的练习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
python习题,关于⽂件操作的练习
习题1
有如下⽂件,a1.txt,⾥⾯的内容为:
⽼男孩是最好的学校,
全⼼全意为学⽣服务,
只为学⽣我未来,不为牟利.
我说的都是真的.哈哈
分别完成以下功能:
1. 将源⽂件全部读出来并打印
2. 在源⽂件后⾯追加⼀⾏内容:信不信由你,反正我信了.
3. 将源⽂件全部读出来,并在后⾯添加⼀⾏内容:信不信由你,反正我信了.
4. 将源⽂件全部清空,换成下⾯内容:
每天坚持⼀点,
每天努⼒⼀点,
每天多思考⼀点,
慢慢你会发现
你的进步越来越⼤.
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⾥⾯的内容为:
葫芦娃,葫芦娃
⼀根藤上七个⽠
风吹⾬打,都不怕
啦啦啦啦.
我可以算命,⽽且算的特别准:
上⾯的内容你肯定是⼼⾥默唱出来的,对不对?哈哈
分别完成下⾯功能:
1. 以r的模式打开源⽂件,利⽤for循环遍历⽂件句柄
2. 以r的模式打开源⽂件,以readlines()⽅法读出来,并循环遍历readlines(),并分析1与2有什么区别,深⼊理解⽂件句柄与readlines()结果的区
别
3. 以r模式读取'葫芦娃',前四个字符
4. 以r模式读取第⼀⾏内容,并除去此⾏前后的空格、制表符、换⾏符.
5. 以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 2
4 ⼥⽣多
......
通过代码将其构建成这种数据类型:
[{'序号': 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, '备注': '⼥⽣多'}。