• 小甲鱼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
    " % 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("
    文件%s的前%s的内容如下:
    " % (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)

    函数变量可多个!!

  • 相关阅读:
    8、Windows下卸载Pycharm
    7、如何安装下载的*.tar.gz?
    6、Windows下Anaconda2(Python2)和Anaconda3(Python3)的共存
    3、Python·Jupyter Notebook各种使用方法记录
    2、Jupyter Notebook 快速入门
    1、在指定目录下启动Jupyter Notebook
    python字符串函数
    5、Anaconda的升级与卸载、新库的安装等
    Android性能测试工具Emmagee介绍
    Fiddler抓包使用教程-安装配置
  • 原文地址:https://www.cnblogs.com/IT-NXXB/p/13277979.html
Copyright © 2020-2023  润新知