#coding=utf-8
'''
最近需要操作txt格式文档,用原本的文本读取方式不成功,于是搜索了一下找到原因。
需要读取的目录下的文件有两种编码方式,一种是ANSI,另外一种是Unicode,但是Unicode的
存储方式有UTF-8,UTF-16等,UTF即为Unicode Translation Format,就是把Unicode转做某种
格式的意思。读取Unicode编码方式的文本时需要标明其存储方式,否则会出错。
PS:本例子是用readfile(filename)读取unicode编码文件方案,如果要读取utf-8编码的文件,可以把utf-16改为utf-8
'''
import sys
import codecs
from PyQt4 import QtGui,QtCore
def writefile(filename, v_ls):
f = codecs.open(filename, 'wb', 'utf-8')
for i in v_ls:
f.write(i + os.linesep)
f.close()
def readfile(filename):
f = codecs.open(filename,'r','utf-16')
ret = [ line.strip() for line in f]
f.close()
return ret
if __name__ == '__main__':
#Qt的菜单翻译模块,并初始化数据
tran = QtCore.QTranslator()
tran.load('qt_zh_CN.qm')
app = QtGui.QApplication(sys.argv)
#安装翻译模块
app.installTranslator(tran)
win32 = QtGui.QWidget()
win32.setWindowTitle(u'试题')
win32.setWindowIcon(QtGui.QIcon('gba.png'))
win32.setGeometry(300,300,600,480)
vBox = QtGui.QVBoxLayout()
win32.setLayout(vBox)
txt = QtGui.QTextEdit(win32)
#更改调色板实现右键选择数据效果一致(Qt默认变成浅灰色很不明显)
p= QtGui.QPalette()
p.setColor(QtGui.QPalette.Inactive,QtGui.QPalette.HighlightedText,QtGui.QColor(255,255,255))
p.setColor(QtGui.QPalette.Inactive, QtGui.QPalette.Highlight ,QtGui.QColor(51,153,255))
txt.setPalette(p)
#将文本对象加入垂直布局,实现自适应窗口大小
vBox.addWidget(txt)
win32.show()
fn = u'tiku.txt'
ret = readfile(fn)
#将列表数据通过join函数以 "\r\n" 的分隔整合到一起存入data中
data = "\r\n".join(list(ret))
txt.setText(QtCore.QString(data))
sys.exit(app.exec_())
本例子是基于Python2.7 , 使用PyQt4.8版本。