鱼C论坛

 找回密码
 立即注册
查看: 1252|回复: 6

[已解决]python第29课:一个任务——课后作业1

[复制链接]
发表于 2020-7-2 18:47:19 | 显示全部楼层 |阅读模式

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

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

x
请教一个问题:

这是标准答案:
def file_compare(file1, file2):
    f1 = open(file1)
    f2 = open(file2)
    count = 0 # 统计行数
    differ = [] # 统计不一样的数量

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

    f1.close()
    f2.close()
    return differ

file1 = input('请输入需要比较的头一个文件名:')
file2 = input('请输入需要比较的另一个文件名:')

differ = file_compare(file1, file2)

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


这个两个文件对比哪里不同的程序。我把标准答案的代码拷贝下来,粘贴到IDLE上,为了运行,我在自己的程序文件夹里徒手制作两个文本文件分别取名为:something 和something2。
然后再两份文件里随便打些东西。

然后操作程序,运行。

运行后,第一行让我输入第一个对比文件的名字。我输入:something。回车
下行问我,输入另一个文件的名字。我输入:something2
然后报错是这个:

Traceback (most recent call last):
  File "E:/Python/程序集/文件对比/文件对比.py", line 20, in <module>
    differ = file_compare(file1, file2)
  File "E:/Python/程序集/文件对比/文件对比.py", line 2, in file_compare
    f1 = open(file1)
FileNotFoundError: [Errno 2] No such file or directory: 'somehing'

顺便问一下,怎么上传图片?
最佳答案
2020-7-2 19:32:37
mhou022 发表于 2020-7-2 19:19
多谢学长,这次好使了。

不过还有一个问题:如果文件里是中文,它还会报错。在前一个作业里,我可以用: ...
  1. f1 = open(file1, encoding = 'utf-8')
  2. f2 = open(file2, encoding = 'utf-8')
复制代码

如果对你有帮助,那就设成【最佳答案】把
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-2 18:48:49 | 显示全部楼层
1,
如何正确地发代码、上传图片和附件?
https://fishc.com.cn/thread-52272-1-1.html
(出处: 鱼C论坛)

2,要输入完整,不要输入 something 而是 something.txt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-2 18:48:55 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-7-2 19:41 编辑




这个报错是找不到 something 这个文件,一般文件也要带上后缀

把你需要比较的文件,放到和代码同一个目录下,或者复制完整的路径,比如说:C:\test\somehing.txt

如何正确地发代码、上传图片和附件?
https://fishc.com.cn/thread-52272-1-1.html
(出处: 鱼C论坛)


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-7-2 19:19:54 | 显示全部楼层
多谢学长,这次好使了。

不过还有一个问题:如果文件里是中文,它还会报错。在前一个作业里,我可以用:
f = open("E:\\filename.txt', encoding = 'utf-8')
但在这个程序里,就没有给我输入:encoding = 'utf-8'的地方了。
有办法解决吗?
def file_compare(file1, file2):
    f1 = open(file1)
    f2 = open(file2)
    count = 0 # 统计行数
    differ = [] # 统计不一样的数量

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

    f1.close()
    f2.close()
    return differ #differ是一个数字列表:如果differ = [1, 2, 3, 5],
                  #则len(differ)就等于4,表示列表中有四项,也就是四处不同。

file1 = input('请输入需要比较的头一个文件名:') #输入文件时要输入全部路径E:\...\什么的
file2 = input('请输入需要比较的另一个文件名:') #如果是中文,encoding也要考虑到

differ = file_compare(file1, file2)

if len(differ) == 0:
    print('两个文件完全一样!')
else:
    print('两个文件共有【%d】处不同:' % len(differ))
    for each in differ:
        print('第 %d 行不一样' % each)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-2 19:32:37 | 显示全部楼层    本楼为最佳答案   
mhou022 发表于 2020-7-2 19:19
多谢学长,这次好使了。

不过还有一个问题:如果文件里是中文,它还会报错。在前一个作业里,我可以用: ...
  1. f1 = open(file1, encoding = 'utf-8')
  2. f2 = open(file2, encoding = 'utf-8')
复制代码

如果对你有帮助,那就设成【最佳答案】把
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-2 19:55:37 | 显示全部楼层
mhou022 发表于 2020-7-2 19:19
多谢学长,这次好使了。

不过还有一个问题:如果文件里是中文,它还会报错。在前一个作业里,我可以用: ...



你可以改下 txt 编码 为 ANSI 就可以不用加 encoding='utf-8' 了,如果嫌麻烦就加下吧 ~
第一步:

                               
登录/注册后可看大图

第二步:

                               
登录/注册后可看大图

第三步,选择第一个ANSI编码:

                               
登录/注册后可看大图



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-2 20:05:14 | 显示全部楼层
多谢学长!辛苦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 20:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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