关于open得到文件的长度与st_size得到文件长度不一样的解决方案

问题:为什么读取到的文本字节数不一样?如何才能判断他们相等呢?

源代码:

 

刚开始一直以为是编码问题,查遍了资料也没有解决方案,最后偶然发现官方文档里面open()的mode参数可以传递附件参数

Several characters can be appended that modify the given mode:

't' : text mode (default)

'b':binary mode

'+':open for updating (reading and writing)

'U':universal newline mode (for backwards compatibility; should not be used in new code)

 

解决方案:

>>> len(open(testFile,'rb').read())
2342

 

 

扩展:

假如我们从文件中读取文本到QTextEdit控件中,然后判断QTextEdit的文本是否改动,这时,你会发现可以调用os模块的stat()函数的st_size属性取得二进制大小,然后对比QTextEdit控件里面的文本二进制大小,但是问题就来了,怎么样取得控件中文本的二进制大小呢?

我查遍了所有的资料,很不巧,没有找不到解决方案。且看:

 

'''怎么才能从QTextEdit控件读出文本的二进制大小与st_size(二进制)相等?'''
'''否则无法判断os.stat(self.filename).st_size != len(self.TextEditWindow.toPlainText())'''
#        if self.filename:
#            self.ShowDialogMessage(str(os.stat(self.filename).st_size) + "--" +
#            str(len(self.TextEditWindow.toPlainText().encode('gb2312'))))

注:filename代表文件路径    TextEditWindow代表QTextEdit控件

 

我使用了一种变通方式,首先,我们读取的时候记录文本大小,保存的时候读取控件文本大小,对比即可。

注:__init__中使用  self.length = 0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值