吃鲸不放辣 发表于 2020-6-19 17:03:53

第二十九讲课后练习题第1题

各位大佬,我的代码如下:

name1=input("请输入需要比较的头一个文件名:")
name2=input("请输入需要比较的另一个文件名:")
f1=open(name1)
f2=open(name2)

count=0
hans=0
result=''

while f1.tell() <= f1.tell(-1) and f2.tell() <= f2.tell(-1):    #结果报错显示tell()里不带参数的,我想问有什么方法可以直接读出文件里共有多少字节?感谢!
    hans+=1
    if f1.readline() != f2.readline():
      count+=1
      result=result+"第"+str(hans)+"行不一样"+"\n"
    else:
      continue

print("两个文件共有",count,"处不同")
print(result)

f1.close()
f2.close()

Twilight6 发表于 2020-6-19 17:11:31

本帖最后由 Twilight6 于 2020-6-19 18:50 编辑


错误判断...!

jackz007 发表于 2020-6-19 17:16:33

#-*-coding:gbk-*-
import os
filename = input('请输入文件名:') . strip()
if(len(filename)):
    if os . path . exists(filename) :
      print(filename , ':' , os . path . getsize(filename) , '字节')
    else:
      print('文件' , filename , '不存在!')

吃鲸不放辣 发表于 2020-6-19 17:48:53

Twilight6 发表于 2020-6-19 17:11
read() 就是逐个读取字节或字符的作用呀

你可以通过判断 len(read()) 是否等于 tell() 来判断文件是否 ...

大佬,一个汉字字符占两个字节,read()返回的所有字符,Len(read())不是表示字符的个数吗?没搞懂

吃鲸不放辣 发表于 2020-6-19 18:48:27

Twilight6 发表于 2020-6-19 17:49
但是 tell 也是根据字节数呀~当我是 2 个你也是 2 个 那不就一致了?

比如:
talker.txt 文件有个字符串:"我是“
那么len(f.read())=2
字节占用是4,也就是指针到末尾的时候f.tell()=4
如果是这样,那我的循环条件不成立啊

Twilight6 发表于 2020-6-19 18:50:36

吃鲸不放辣 发表于 2020-6-19 18:48
比如:
talker.txt 文件有个字符串:"我是“
那么len(f.read())=2


{:10_257:}对哦是我的错 !!

Twilight6 发表于 2020-6-19 18:53:22

吃鲸不放辣 发表于 2020-6-19 18:48
比如:
talker.txt 文件有个字符串:"我是“
那么len(f.read())=2


我想到一个 就是麻烦点

先 read() 然后 在 tell然后再 seek(0,0) 回到文件开始处这样 tell 时候就是总字节数

1223253411 发表于 2020-6-19 19:09:04

额,如果是想要直接获取文件有多少字节的话

import os
    os.path.getsize(文件名)   

这个方法可以直接获取文件的总字节

页: [1]
查看完整版本: 第二十九讲课后练习题第1题