mhou022 发表于 2020-7-2 18:47:19

python第29课:一个任务——课后作业1

请教一个问题:

这是标准答案:
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: No such file or directory: 'somehing'

顺便问一下,怎么上传图片?

liuzhengyuan 发表于 2020-7-2 18:48:49

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

2,要输入完整,不要输入 something 而是 something.txt

Twilight6 发表于 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论坛)


mhou022 发表于 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 = ,
                  #则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)

liuzhengyuan 发表于 2020-7-2 19:32:37

mhou022 发表于 2020-7-2 19:19
多谢学长,这次好使了。

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

f1 = open(file1, encoding = 'utf-8')
f2 = open(file2, encoding = 'utf-8')
如果对你有帮助,那就设成【最佳答案】把

Twilight6 发表于 2020-7-2 19:55:37

mhou022 发表于 2020-7-2 19:19
多谢学长,这次好使了。

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


你可以改下 txt 编码 为 ANSI 就可以不用加 encoding='utf-8' 了,如果嫌麻烦就加下吧 ~
第一步:
https://xxx.ilovefishc.com/forum/202005/25/072650zqq1fqqmng421bqz.jpg
第二步:
https://xxx.ilovefishc.com/forum/202005/25/072647nvzjv2zemvgxet5g.jpg
第三步,选择第一个ANSI编码:
https://xxx.ilovefishc.com/forum/202006/22/222937li4vv400i6v44b6z.png


mhou022 发表于 2020-7-2 20:05:14

多谢学长!辛苦了
页: [1]
查看完整版本: python第29课:一个任务——课后作业1