小白求助求助!!关于for lines in str的问题
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)
这个程序里,我标红的for line1 in f1
这个line1不应该是一个一个字符读取的吗
但是后面的f2.readline是读取行
有点不解
这个line1也是一行一行的读取的,l每个ine1读取到回车字符会结束,所以它也是一行一行的 如果像一个字符一个字符读取的话需要
for line1 in f1:
for each in line1:
这样的话才是一个字符一个字符读取的
文件这一块的操作很多都是需要去记住的,学到后面会发现文件这一块是非常有趣的,加油{:10_275:} 小甲鱼的铁粉 发表于 2020-6-27 10:41
这个line1也是一行一行的读取的,l每个ine1读取到回车字符会结束,所以它也是一行一行的
>>> file2 = 'abcasdasd\nadsasdasdas\nwaeawewad\n'
>>> for line1 in file2:
print(line1)
a
b
c
a
s
d
a
s
d
a
d
s
a
s
d
a
s
d
a
s
w
a
e
a
w
e
w
a
d 小甲鱼的铁粉 发表于 2020-6-27 10:41
这个line1也是一行一行的读取的,l每个ine1读取到回车字符会结束,所以它也是一行一行的
我刚刚试了一下是这样子的,是哪里出错了吗{:10_266:} Carsten 发表于 2020-6-27 10:44
我刚刚试了一下是这样子的,是哪里出错了吗
我看一下哈 小甲鱼的铁粉 发表于 2020-6-27 10:46
我看一下哈
好像是我之前的file是直接赋值的,并不是真正的文件。所以是这样吗?对于文件使用 for lines in 是一行行提取的,对于字符串是一个个提取的。 Carsten 发表于 2020-6-27 10:44
我刚刚试了一下是这样子的,是哪里出错了吗
你这个是遍历字符串啊,只有遍历文件对象才是一行一行读取的 Carsten 发表于 2020-6-27 10:53
好像是我之前的file是直接赋值的,并不是真正的文件。所以是这样吗?对于文件使用 for lines in 是一行行 ...
是的
Twilight6 发表于 2020-6-27 10:53
你这个是遍历字符串啊,只有遍历文件对象才是一行一行读取的
t6,你看一下楼主的这个代码对吗?我看不出来 Twilight6 发表于 2020-6-27 10:53
你这个是遍历字符串啊,只有遍历文件对象才是一行一行读取的
嗯嗯,对我搞错了,我弄了个文件就一行行了
for line1 in f1:
line2 = f2.readline()
for 循环遍历文件对象时候,是以一行一行读取文件的,而 readline() 方法,也是每次读取文件一行
每次读取完文件指针就会移动到下一行的开头,所以下次读取 readline() 时候,就是下一行呗
这样每次比较的都是 f1 和 f2 的同一行进行比较,f1 下一行 ,f2 也会下一行
小甲鱼的铁粉 发表于 2020-6-27 10:56
t6,你看一下楼主的这个代码对吗?我看不出来
楼主的这个是课后答案吧{:10_297:} Twilight6 发表于 2020-6-27 10:59
楼主的这个是课后答案吧
嗯{:10_297:} Twilight6 发表于 2020-6-27 10:59
楼主的这个是课后答案吧
有一个新帖,是有关类的,我也看不懂,你去看一下吧,类我快迷死了{:10_269:} 小甲鱼的铁粉 发表于 2020-6-27 11:03
有一个新帖,是有关类的,我也看不懂,你去看一下吧,类我快迷死了
嘿嘿答完了 你也可以去 理解下
页:
[1]