鱼C论坛

 找回密码
 立即注册
查看: 1375|回复: 9

29讲第1题,文件比较部分,再次打开文件时,显示我的路径或者文件夹不存在

[复制链接]
发表于 2020-3-27 11:05:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  1. #编写一个程序,比较用户输入的两个文件,如果不同,
  2. #显示出所有不同处的行号与第一个不同字符的位置,程序实现如图:
  3. title1=input('请输入需要比较的第1个文件名:')
  4. title2=input('请输入需要比较的第2个文件名:')
  5. #---------------------------写入文件------------------------------
  6. context_1=[]
  7. context_2=[]

  8. #向第一个文件写入

  9. message_1=''
  10. while message_1 != ':w':
  11.    message_1 = input('请输入第一个文件的内容【单独输入‘:w’保存退出】:')
  12.    if message_1 !=  ':w':
  13.       context_1.append(message_1)
  14.       context_1.append(' \r\n')           #存入换行符

  15. print('')  
  16. #向第二个文件写入
  17. message_2=''
  18. while message_2 != ':w':
  19.    message_2 = input('请输入第二个文件的内容【单独输入‘:w’保存退出】:')
  20.    if message_2 !=  ':w':
  21.       context_2.append(message_2)
  22.       context_2.append(' \r\n')


  23. final_tltle_file_1 = title1 + '.txt'
  24. final_tltle_file_2 = title2 + '.txt'

  25. final_1 = open(final_tltle_file_1,'w+')
  26. final_2 = open(final_tltle_file_2,'w+')

  27. final_1.writelines(context_1)
  28. final_2.writelines(context_2)

  29. final_1.close()
  30. final_2.close()

  31. #---------------------------文件比较----------------------------
  32. final_tltle_1=open(r"C:\Users\Administrator\Desktop\python\final_tltle_file_1.txt","r")
  33. final_tltle_2=open(r"C:\Users\Administrator\Desktop\python\final_tltle_file_2.txt","r")                  


  34. code_1=[]
  35. code_2=[]
  36. count=[]     #存放不相同的行数的位置

  37. for each_1 in final_tltle_1:
  38.     code_1.append(each_1)                                #将文件中的每一行内容,存入列表

  39. for each_2 in final_tltle_2:
  40.     code_2.append(each_2)

  41.         
  42. for i in range(min(len(code_1),len(code_2))):             #若两个列表长度不一致的情况,取较小,避免报错
  43.    if code_2[i] != code_1[i]:
  44.         count.append(i)
  45.         print('count=',count)




  46. #----------------------文件行数相等时的比较-------------------------
  47.    if len(code_1) == len(code_2):                         #两个列表的长度就是文件内容的行数,判断行数是否相等      
  48.        print('两个文件共有【',len(count),'】处不同')
  49.        for j in range(len(count)):
  50.               print('第',j,'行不一样')

  51. #----------------------文件行数不相等时的比较-------------------------
  52.               
  53.    #两个文件行数不同时,文件多余的那几行,必然与另一个文件对应的那几行是不同的
  54.    #用较长的列表减去较短的列表,得到多余的那几行,加上先前比较的不相等的行数,得到最后的不相等的总行数
  55.    else:   
  56.        redundant=max(len(code_1),len(code_2))-min(len(code_1),len(code_2))
  57.        print('两个文件共有【',len(count)+redundant,'】处不同')
  58.        for j in range(len(count)):
  59.               print('第',j,'行不一样')                     #打印相比之后不相等的行数
  60.        for m in range((min(len(code_1),len(code_2)))+1,(max(len(code_1),len(code_2)))+1):
  61.               print('第', m ,'行不一样')                     #打印长度多出来的那几行
  62.          
  63. final_tltle_file_1.close()
  64. final_tltle_file_2.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 13:50:50 | 显示全部楼层
前面写的时候给的是相对路径,也就是你自己的工作路径,并不是默认在C:\Users\Administrator\Desktop\python\
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 14:24:26 | 显示全部楼层
BngThea 发表于 2020-3-27 13:50
前面写的时候给的是相对路径,也就是你自己的工作路径,并不是默认在C:%users\Administrator\Desktop\pytho ...

啊,我是看所新建的文件在那个目录下,把路径复制过来了,那正确的路径应该是什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 14:42:54 | 显示全部楼层
默认的工作路径,你可以这样查看:
  1. import os
  2. os.getcwd()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 15:21:30 | 显示全部楼层
BngThea 发表于 2020-3-27 14:42
默认的工作路径,你可以这样查看:

老师,我查了,路径确实是我写的那个路径,那到底啥情况呢,这已经超出了我的认知了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 15:23:11 | 显示全部楼层
BngThea 发表于 2020-3-27 14:42
默认的工作路径,你可以这样查看:

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 15:40:44 | 显示全部楼层
你输入的是文件名是对应的 final_tltle_file_1吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 15:59:22 | 显示全部楼层
BngThea 发表于 2020-3-27 15:40
你输入的是文件名是对应的 final_tltle_file_1吗

我试了好几种情况,都不对
  1. final_tltle_1=open(r"C:\Users\Administrator\Desktop\python\final_tltle_file_1.txt","r")

  2. final_tltle_1=open(r"C:\Users\Administrator\Desktop\python\final_1.txt","r")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 17:55:32 | 显示全部楼层
猪猪虾 发表于 2020-3-27 15:59
我试了好几种情况,都不对

你的title1和title2不是自己输入的文件名吗,我是说你输入的匹配不
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-28 14:36:59 | 显示全部楼层
BngThea 发表于 2020-3-27 17:55
你的title1和title2不是自己输入的文件名吗,我是说你输入的匹配不

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-18 20:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表