问题:为什么读取到的文本字节数不一样?如何才能判断他们相等呢?
源代码:
刚开始一直以为是编码问题,查遍了资料也没有解决方案,最后偶然发现官方文档里面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。