小甲鱼Python第029讲文件:一个任务 | 课后测试题及参考答案

动动手:

0.编写一个程序,接受用户的输入并保存为新的文件,程序实现如图:

实现代码:

 1 def new_file(file_name):
 2     f = open (file_name , "w")
 3     print("请输入内容[单独输入':w'保存退出]:")
 4     while True:
 5         write_some = input()
 6         if write_some != ':w':
 7             f.write("%s\n" % write_some)
 8         else:
 9             break
10     f.close()
11 file_name = input("请输入文件名:")
12 new_file(file_name)

 

1.编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置,程序实现如图:

 实现代码:

 1 # 同一文件夹内比较
 2 def file_compare(file1,file2):
 3     f1 = open(file1,"r")
 4     f2 = open(file2,"r")
 5     count = 0
 6     differ = []
 7 
 8     for each_line1 in f1:
 9         each_line2 = f2.readline()
10         count += 1
11         if each_line1 != each_line2:
12             differ.append(count)
13 
14     f1.close()
15     f2.close()
16     return differ
17 
18 file1 = input("请输入需要比较的头一个文件名:")
19 file2 = input("请输入需要比较的后一个文件名:")
20 
21 differ = file_compare(file1,file2)
22 if len(differ) == 0:
23     print("两个文件完全一样。")
24 else:
25     print("两个文件有%d处不同" % len(differ) )
26     for each in differ:
27         print("第%d行不一样" % each)

2.编写一个程序,当用户输入文件名和行数(N)后,将该文件的前N行内容打印在屏幕上,程序实现如图:

 

 

 

 实现代码:

 1 def read_file(file,num):
 2     f = open(file)
 3     each_line_length = len(file)
 4     if num == 0:
 5         print(" ")
 6     if each_line_length <= num:
 7         print("文件行数只有%d行,已全部读取"% each_line_length)
 8         for each_line in f :
 9             print(each_line)
10     else:
11         # 读取前多少行
12         for i in range(num):
13             print(f.readline(),end = "")
14             
15     f.close()
16             
17 file = input("请输入要打开的文件名(带路径):")
18 num = int (input("请输入需要显示改文件前几行:"))
19 read_file(file,num)

方法2:

1 def file_view(file_name,file_num):
2     print("\n文件%s的前%s的内容如下:\n" % (file_name,file_num))
3     f = open(file_name)
4     for i in range(int(file_num)):
5         print(f.readline(),end = " ")
6     f.close()
7 file_name = input("请输入要打开的文件名(带路径):")
8 file_num = (input("请输入需要显示改文件前几行:"))
9 file_view(file_name,file_num)

3.在上一题的基础上进行扩展,用户可以随意输入需要显示的行数(如果输入13:21打印第13行到21行,输入为:21打印前21行,输入21:则打印从第21行开始到文件结尾所有内容)

 实现代码:

 1 def read_file(file,num1):
 2     f = open(file)
 3     list1 = list(num1.split(":"))
 4     # print(list1)
 5     begin = list1[0]
 6     end = list1[1]
 7     if begin == "":
 8         begin = 1
 9     if end =="":
10         end = -1
11     if begin ==1 and end == -1:
12         temp = "全文"
13         # 显示全文
14         # print(f.readline())
15     elif begin ==1:
16         temp = "从开始到%d行" % end
17     elif end == -1:
18         temp = "从%d行到最后" % begin
19     else:
20         temp = "从%s到%s行" % (begin,end)
21     print("文件%s" % file +temp+"的内容如下:" )
22 
23     begin = int(begin)-1
24     end = int (end )
25     lines = end-begin
26     each_line_length = len(file)
27     # 消耗掉。不显示内容
28     for i in range(begin):
29         f.readline()
30     if lines <0:
31         print(f.read())
32     else:
33         for j in range(lines):
34             print(f.readline(),end= "")
35     f.close()
36 
37 file = input("请输入要打开的文件名(带路径):")
38 num1 = input("请输入需要显示该文件行数【格式如13:21或:21或13:或:】:")
39 read_file(file,num1)

 

 4.编写一个程序,实现“全部替换”功能,程序实现如图:

 

 实现代码:

 1 def file_replace(file_name,old_word,new_word):
 2     f = open(file_name)
 3     count= 0
 4     content = []
 5     num =0
 6     for eachline in f :
 7         num  += 1
 8         if old_word in eachline:
 9             count += eachline.count(old_word)
10             eachline = eachline.replace(old_word, new_word)
11             content.append(eachline)
12         else:
13             content.append(eachline)
14     print("文件中共有"+str(count)+""+old_word)
15     prompt = input("您确定要把所有的"+old_word+"替换成"+new_word+"吗?【YES/NO】")
16     if prompt  in ['YES','yes','Yes']:
17         f_write = open(file_name,"w")
18         for i in range(len(content)):
19             temp = str(content[i])
20             f_write.writelines(temp)
21         f_write.close()
22     f.close()
23 
24 file_name = input("请输入文件名:")
25 old_word = input("请输入需要替换的单词和字符:")
26 new_word = input("请输入新的单词或者字符:")
27 file_replace(file_name,old_word,new_word)

 

 

函数变量可多个!!

posted @ 2020-07-10 10:31  逆袭小白  阅读(629)  评论(1编辑  收藏  举报