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行至最后一行
3.编写一个程序,实现“全部替换”功能
def replace(file_name,o_word,n_word):
file = open(file_name,'r') #读文件
file_new = open('2' + file_name,'w') #另存为一个文件2
for eachline in file:
if o_word in eachline:
eachline = eachline.replace(o_word,n_word) #替换使用replace函数
file_new.write(eachline) #这里因为疏忽了对齐,调试了很久,将file读取的每一行写入file2
file.close()
file_new.close()
file_name = input('请输入文件名:')
o_word = input('请输入被替换的:')
n_word = input('请输入新的:')
replace(file_name,o_word,n_word)
基本思路:打开源文件1,遍历每一行,如果有需要替换的内容,使用replace替换后,再将句子写入新文件2
存在的问题:运行时很慢,估摸着是因为把文件全部内容按行各读写一遍的原因,现在技能暂时无法找到更好的解决办法
然后网上有很多参考方法,但是有的我读不懂而且在自己电脑环境下调试也不太对,就放弃了那些方案,按着自己的理解写出