29讲第1题,文件比较部分,再次打开文件时,显示我的路径或者文件夹不存在
#编写一个程序,比较用户输入的两个文件,如果不同,
#显示出所有不同处的行号与第一个不同字符的位置,程序实现如图:
title1=input('请输入需要比较的第1个文件名:')
title2=input('请输入需要比较的第2个文件名:')
#---------------------------写入文件------------------------------
context_1=[]
context_2=[]
#向第一个文件写入
message_1=''
while message_1 != ':w':
message_1 = input('请输入第一个文件的内容【单独输入‘:w’保存退出】:')
if message_1 !=':w':
context_1.append(message_1)
context_1.append(' \r\n') #存入换行符
print('')
#向第二个文件写入
message_2=''
while message_2 != ':w':
message_2 = input('请输入第二个文件的内容【单独输入‘:w’保存退出】:')
if message_2 !=':w':
context_2.append(message_2)
context_2.append(' \r\n')
final_tltle_file_1 = title1 + '.txt'
final_tltle_file_2 = title2 + '.txt'
final_1 = open(final_tltle_file_1,'w+')
final_2 = open(final_tltle_file_2,'w+')
final_1.writelines(context_1)
final_2.writelines(context_2)
final_1.close()
final_2.close()
#---------------------------文件比较----------------------------
final_tltle_1=open(r"C:\Users\Administrator\Desktop\python\final_tltle_file_1.txt","r")
final_tltle_2=open(r"C:\Users\Administrator\Desktop\python\final_tltle_file_2.txt","r")
code_1=[]
code_2=[]
count=[] #存放不相同的行数的位置
for each_1 in final_tltle_1:
code_1.append(each_1) #将文件中的每一行内容,存入列表
for each_2 in final_tltle_2:
code_2.append(each_2)
for i in range(min(len(code_1),len(code_2))): #若两个列表长度不一致的情况,取较小,避免报错
if code_2 != code_1:
count.append(i)
print('count=',count)
#----------------------文件行数相等时的比较-------------------------
if len(code_1) == len(code_2): #两个列表的长度就是文件内容的行数,判断行数是否相等
print('两个文件共有【',len(count),'】处不同')
for j in range(len(count)):
print('第',j,'行不一样')
#----------------------文件行数不相等时的比较-------------------------
#两个文件行数不同时,文件多余的那几行,必然与另一个文件对应的那几行是不同的
#用较长的列表减去较短的列表,得到多余的那几行,加上先前比较的不相等的行数,得到最后的不相等的总行数
else:
redundant=max(len(code_1),len(code_2))-min(len(code_1),len(code_2))
print('两个文件共有【',len(count)+redundant,'】处不同')
for j in range(len(count)):
print('第',j,'行不一样') #打印相比之后不相等的行数
for m in range((min(len(code_1),len(code_2)))+1,(max(len(code_1),len(code_2)))+1):
print('第', m ,'行不一样') #打印长度多出来的那几行
final_tltle_file_1.close()
final_tltle_file_2.close()
前面写的时候给的是相对路径,也就是你自己的工作路径,并不是默认在C:\Users\Administrator\Desktop\python\ BngThea 发表于 2020-3-27 13:50
前面写的时候给的是相对路径,也就是你自己的工作路径,并不是默认在C:%users\Administrator\Desktop\pytho ...
啊,我是看所新建的文件在那个目录下,把路径复制过来了,那正确的路径应该是什么 默认的工作路径,你可以这样查看:
import os
os.getcwd() BngThea 发表于 2020-3-27 14:42
默认的工作路径,你可以这样查看:
老师,我查了,路径确实是我写的那个路径,那到底啥情况呢,这已经超出了我的认知了 BngThea 发表于 2020-3-27 14:42
默认的工作路径,你可以这样查看:
{:5_100:} 你输入的是文件名是对应的 final_tltle_file_1吗 BngThea 发表于 2020-3-27 15:40
你输入的是文件名是对应的 final_tltle_file_1吗
我试了好几种情况,都不对final_tltle_1=open(r"C:\Users\Administrator\Desktop\python\final_tltle_file_1.txt","r")
final_tltle_1=open(r"C:\Users\Administrator\Desktop\python\final_1.txt","r")
猪猪虾 发表于 2020-3-27 15:59
我试了好几种情况,都不对
你的title1和title2不是自己输入的文件名吗,我是说你输入的匹配不 BngThea 发表于 2020-3-27 17:55
你的title1和title2不是自己输入的文件名吗,我是说你输入的匹配不
奥
页:
[1]