加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

PyQt学习笔记(13)——QFile

(2010-03-06 22:10:25)
标签:

pyqt4

python

qfile

电脑

dat

二进制

if

it

分类: Python

    QFile提供了一个读写文件的接口,QFile经常和QTextStream以及QDataStream一起使用。

    使用QFile时候,一般要传递一个file name参数,但也可以通过setFileName()方法在QFile实例化以后在设置。注意文件路径要用”/”而不要要”\”来间隔。

    exists()方法用来check文件是否存在,remove()用来remove a file

    open()打开文件,用close()关闭文件,读写文件一般使用QDataStream()

QTextStream()。当然我们也可以使用python标准内置方法read(),readLine(),readAll(),write()等。

    文件的大小可以通过size()方法得到,文件的位置可以用pos()方法,seek()移动到文件的特定位置,atEnd()返回真即到了文件结尾。

    下面看一个例子:

def loadFile(self, fileName):

    file = QFile(fileName)

    if not file.open(QFile.ReadOnly | QFile.Text):

QMessageBox.warning(self, self.tr("Application"),self.tr("Cannot read file %1:\n%2.").arg(fileName).arg(file.errorString()))

       return

inf = QTextStream(file)

if not 一句当打开文件出现问题(比如文件不存在)时会弹出waring对话框并返回。

其中open里面的两个参数,ReadOnlyText分别代表只读,和转化换行符为”\n”

    QTextStream是读取文件全部内容于inf,如果想打印出里面的内容,我们可以通过:

Inf.readAll(),cont = inf.readAll()text的内容以Qstring的类型读到cont中,用print cont即可打印文件的内容了。

    关于QFilemethods情参看documentation

   

    下面主要看看如何用QDataStream读取文件。

    什么是data stream呢?它是一个二进制流信息,并且这样的文件具有平台无关性,不管是linuxwindows,而且与CPU的字节序无关,在windows下写的data stream它可以在别的其他系统中读取。

from PyQt4.QtCore import *

myFile = QFile('./file.dat')

if not myFile.open(QFile.WriteOnly | QFile.Text):

        print "something is wrong!"

out = QDataStream(myFile)

out<<QString("test 1 2 3")

myFile.close()

    我们就在当前目录下建立了一个二进制文件file.dat ,用UltraEdit打开我们会发现,它是8bitdata 转化成16bit Unicode Qstring的形式存到硬盘上,当然我们是假设我们的系统默认的是8bit的编码。所以这里的一个”t”是用了十六进制0x7400两个字节来表示的。

    下面我们看一下如何读取上面写的file.dat文件

    readfile = QFile("./file.dat")

myFile.open(QFile.ReadOnly)

cont = QDataStream(myFile)

qst = QString()

cont>>qst

print qst

结果为打印出”test 1 2 3”

 

读取二进制文件:看下面的例子

>>> from PyQt4.QtCore import *

>>> pcapfile = QFile('C:/Python25/code/pcap/test.pcap')

>>> pcapfile.open(QFile.ReadOnly)

True

>>> out = QDataStream(pcapfile)

>>> QDataStream.readRawData(out,4)

'\xd4\xc3\xb2\xa1'

>>> QDataStream.readRawData(out,4)

'\x02\x00\x04\x00'

>>> type(QDataStream.readRawData(out,4))

<type 'str'>

>>> 

读取pcap文件,以二进制的方式,可以读取任意字节出来,注意读取的是str格式的。

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有