文件习题
2020-04-11 本文已影响0人
lvyz0207
这是一篇值得多练几遍的习题
# 1.编写一个程序建立一个文本文件 abc.txt,向其中写入”abc\n”并存盘,查看 abc.txt 是几个字节的文件,说明为什么。
def test1():
with open("abc.txt", "a") as f:
f.write("abc\n")
# test1()
# 4个字符
# 2.用 Windows 记事本编写一个文本文件 xyz.txt,在其中存入”123”后打”Enter”键换行,
# 存盘后查看文件应是 5 个字节长,用 read(1)读该文件,看看要读 5 次还是 4 次就把文件读完,为什么?编写程序验证。
def test2():
with open("abc.txt", "r") as f:
i = 0
while True:
f1 = f.read(1)
i += 1
print("i", i)
if f1 == "":
return False
print(f1)
# test2() # 读 5 次
# 3.编写程序查找某个单词(键盘输入)所出现的行号及该行的内容,并统计该单词在文件 共出现多少次。
def test3():
word = input("输入一个单词")
with open("abc.txt", "r") as f:
# f.count(word)
i = 0
line_num = 0
for line in f:
line_num += 1
if word in line:
i += 1
print(line_num, line.strip())
# print(i)
print(i)
# test3()
# 4.设一个文本文件 marks.txt 中存储了学生的姓名及成绩如下:
# 张三 96
# 李四 95
# ...... 每行为学生姓名与成绩,编写一个程序读取这些学生的姓名与成绩并按成绩的从高到低的顺 序输出到另外一个文件 sorted.txt 中。
def test4():
"""
思路:创建一个新的分数数组,排序后,与原列表值一一对比,相等则输出到新的文件中
:return:
"""
marks = []
lis = []
with open("marks.txt", "r") as f:
print(type(f))
print(f)
for line in f:
lis.append(line.rstrip().split(" "))
mark = int(line.rstrip().split(" ")[-1])
marks.append(mark)
marks.sort(reverse=True)
for i in range(len(marks)):
for j in range(len(lis)):
if int(lis[j][1]) == marks[i]:
s = lis[j][0] + ' ' + lis[j][1] + "\n"
with open("sorted.txt", "a") as f:
f.write(s)
# test4()
# 5. 编写一个程序,它能统计一篇英文文章中的 a~z 各个字母出现的次数(不分大小写),并 按出现次数的多少按顺序输出。
def count_each_char_sort_value(string):
"""
sorted(iterable, cmp=None, key=None, reverse=False)
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
:param string:
:return:
"""
res = {} # 定义一个字典
for i in string:
res[i] = res.get(i, 0) + 1 # 字典中的值 dict.get(key, default=None) key -- 字典中要查找的键。 default -- 如果指定键的值不存在时,返回该默认值。
res = sorted(res.items(), key=lambda x:x[1], reverse=True) # sorted(iterable, cmp=None, key=None, reverse=False) key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。 reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
return res
with open("abc.txt", "r") as f:
s = "".join(i.strip() for i in f)
s = s.lower()
print(count_each_char_sort_value(s))
# 6、查找一个文章里出现次数最多的10的单词
import re
def most_word(path,n):
dic = {}
with open(path,"r", encoding="utf-8") as file:
data = file.read()
words = [s.lower() for s in re.findall("\w+", data)]
print(words)
for word in words:
dic[word] = dic.get(word, 0) + 1
res = sorted(dic.items(), key= lambda x:x[1], reverse=True)[:n]
return res
path = "/Users/lvyz/Downloads/axf/env/django_axf_env/Lib/codecs.py"
print(most_word(path, 5))
GT2Rs