首页 > 编程语言 > 详细

拉长战线克服文件(小甲鱼课后题)python超级入门

时间:2020-08-22 08:13:34      阅读:54      评论:0      收藏:0      [点我收藏+]

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

fname = input(请输入文件名:)
file = open(fname,x)
print(请输入内容【单独输入\‘:w\‘保存退出】:)
while 1:
    content = input()
    if content == :w:
        break
    else:
        
        file.write(%s\n%content)
file.close()

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

f1_name = input(请输入需要比较的第一个文件名:)
f2_name = input(请输入需要比较的第二个文件名:)

file1 = open(f1_name)
file2 = open(f2_name)

count = 0    #定义行数
differ = []  #记录行数

for line1 in file1:
    line2 = file2.readline()
    count += 1
    if line1 != line2:
        differ.append(count)

file1.close()
file2.close()

if len(differ) == 0:
    print(两个文件完全一样!)
else:
    print(两个文件共%d行不同%len(differ))
    for line in differ:
        print(第%d行不一样%line)

方法一这个参考了网上普遍的答案,只能显示哪一行不一样,并没有指出索引值,下面进行修改,详细到不同的位置,顺便用用把功能封装,调用函数的方法

def compare(f1_name,f2_name):   #给带参且有返回值
    file1 = open(f1_name)
    file2 = open(f2_name)

    row = 0     #记录哪一行
    count = 0   #记录一共几处错误

    for (line1,line2) in zip(file1,file2):
        row += 1
        if line1 != line2:
            index = 0
            for (char1,char2) in zip(line1,line2):
                index += 1        
                if char1 != char2:
                    print(第%d行第%d列不一样%(row,index))
                    count += 1
    file1.close()
    file2.close()
    return count

f1_name = input(请输入需要比较的第一个文件名:)
f2_name = input(请输入需要比较的第二个文件名:)

count = compare(f1_name,f2_name)

if count == 0:
    print(两个文件完全一样!)
else:
    print(两个文件共%d处不同%count)

看看运行结果:

===================================
请输入需要比较的第一个文件名:file1.txt
请输入需要比较的第二个文件名:file3.txt
两个文件完全一样!
===================================
请输入需要比较的第一个文件名:file1.txt
请输入需要比较的第二个文件名:file2.txt
第1行第5列不一样
第1行第6列不一样
第3行第1列不一样

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

def readline(file_name,start,end):
    file = open(file_name)
    print(第%d行到第%d内容为:%(start,end))
    for row in range(end):
        print(row)
        a = file.readline()
        if start-1 <= row < end:
            print(a,end=‘‘)
        else:
            continue
    file.close()
    
file_name = input(请输入文件名:)
s_e = input(请指定输出行数(形如a:b):)
while s_e == ‘‘:
    s_e = input(输入有误,请重新输入:)
(start,end) = s_e.split(:)
if start == ‘‘:
    start = 1
else:
    start = int(start)
if end == ‘‘:
    end = -1
else:
    end = int(end)
print(start)
print(end)


readline(file_name,start,end)

程序还有点问题,输入“x:”即end为空值时,无法读出从第x行至最后一行

 

拉长战线克服文件(小甲鱼课后题)python超级入门

原文:https://www.cnblogs.com/mumulucky/p/13543935.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!