|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这个问题是我在做第35讲第3问时遇到的,由于以前编的程序没有保存,也懒得去之前的回答里翻,所以从新编写了一次
一开始我是按照下面这种方法编写:
- from easygui import *
- import os
- file = fileopenbox()
- filename = os.path.basename(file)
- with open(file) as f,open(file) as g:
- k = textbox(msg = '文件【{0}】的内容如下:'.format(filename),title='显示文件内容',text=f.read())
- if k == g.read(): #直接作比较
- print('yes')
- else:
- print('no')
复制代码
无论我有没有对k做出修改,比较结果都是不一样。
我单独打印过k和g.read()的文本对照过发现并没有不一样的地方。并且两者都是str的类型。
于是我猜测了几种情况并进行了检验:
1.g.read()可能是要逐字读取,所以不能直接和k比较,所以我先用h = g.read(),再用h和k比较,但结果失败。
2.也许不能直接比较两个多行的字符串。于是我另外编写了两个多行字符串做比较,结果并不是这个原因。
3.也许k里面每一行里藏有看不见的空格还是别的什么东西,于是我用k.split(sep='=')来切片,发现并没有空格。
而当我改用另一种方法:
- from easygui import *
- import os
- file = fileopenbox()
- filename = os.path.basename(file)
- with open(file) as f,open(file) as g:
- k = textbox(msg = '文件【{0}】的内容如下:'.format(filename),title='显示文件内容',text=f.read())
- if k.split() == g.read().split(): #我觉得可能是k里藏了一些别的什么东西,所以分成列表再来比较
- print('yes')
- else:
- print('no')
复制代码
这一次就正常了,和期望结果一样。
希望大牛帮我看看第一种方法错在什么地方,谢谢。 |
|