gpt4 book ai didi

python - 将 QStringList (PyQt) 转换为普通的 python 列表

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:38 27 4
gpt4 key购买 nike

我想获取 qstringlist 中的每个元素并从列表中获取原始数据,而不是 pyqt 将其存储为什么。

def find(self):
self.foundFileList.setRowCount(0)

fileName = self.inputFileName.currentText()
path = self.directoryPath.currentText()
maxSize = Decimal(self.maxFileSize.value())
i = 0

self.updateComboBox(self.inputFileName)
self.updateComboBox(self.directoryPath)
self.currentDir = QtCore.QDir(path)

if not fileName:
fileName = "*"

allFiles = self.currentDir.entryList([fileName],
QtCore.QDir.Files | QtCore.QDir.NoSymLinks, QtCore.QDir.Size)

files = self.currentDir.entryList([fileName],
QtCore.QDir.Files | QtCore.QDir.NoSymLinks, QtCore.QDir.Size)

for fn in allFiles:
file = QtCore.QFile(self.currentDir.absoluteFilePath(fn))
size = Decimal((QtCore.QFileInfo(file).size() + 1023) / 1024)

if size > maxSize:
files.removeAt(i)

i += 1

self.showFiles(files)

def showFiles(self, files):
##Clean house before new round of files is displayed
del nameList[0:len(nameList)]
del fileList[0:len(fileList)]
i = 0
for fn in files:
nameList.append(fn)
file = QtCore.QFile(self.currentDir.absoluteFilePath(fn))
fileList.append(file)
size = QtCore.QFileInfo(file).size()
##Some other stuff below here but it's irrelevant

print nameList
print "_____________________________"
print fileList

我得到的输出如下:

> [PyQt4.QtCore.QString(u'data - Copy (2).txt'),
> PyQt4.QtCore.QString(u'data - Copy (3).txt'),
> PyQt4.QtCore.QString(u'data - Copy (4).txt'),
> PyQt4.QtCore.QString(u'data - Copy (5).txt'),
> PyQt4.QtCore.QString(u'data - Copy (6).txt'),
> PyQt4.QtCore.QString(u'data - Copy.txt'),
> PyQt4.QtCore.QString(u'data.txt')]
> _____________________________
> [<PyQt4.QtCore.QFile object at 0x000000000B28C400>,
> <PyQt4.QtCore.QFile object at
> 0x000000000B28C598>, <PyQt4.QtCore.QFile object at
> 0x000000000B28C730>, <PyQt4.QtCore.QFile object at
> 0x000000000B28C8C8>, <PyQt4.QtCore.QFile object at
> 0x000000000B28CA60>, <PyQt4.QtCore.QFile object at
> 0x000000000B28CBF8>, <PyQt4.QtCore.QFile object at
> 0x000000000B28CD90>]

如您所见,我只获取 QString 值和似乎是内存位置的内容,我希望实际字符串本身和实际目录值作为字符串存储到 python 列表中。我这样做的主要原因是我已经为 matplotlib 和 scipy 编写了一个脚本,我只需要这两个列表就可以让它工作。

最佳答案

怎么样:

print map(str, nameList)
print "_____________________________"
print [str(f.fileName()) for f in fileList]

第一个只是将每个 QString 转换为字符串。

第二个获取每个QFile的fileName()值

您还可以将 map 写成列表推导式:

print [str(name) for name in nameList]

我还想在这里添加一些内容来解决可能导致整体困惑的问题。这就是 python 对象的打印 表示 和对象的实际 之间的区别。

任何 python 对象都可以定义 __repr__()方法将返回一个字符串,以提供该对象的可视化打印表示。将这些对象打印出来时,与调用 print repr(myObject) 是一样的。您打印一个包含 QString 的 QStringList。 QStrings 打印的 repr 是向您显示模块路径,然后是封闭的 unicode 值。该对象仍然是一个 QString,并且具有 QString 的所有方法。要查看不同的打印值,您必须将其转换为字符串对象。字符串的 repr 恰好是它自己的原始字符串值。

我想提及这一点以回应您的评论,询问您是否应该进入并删除每个元素中的 PyQt4.QtCore.QString(u 位,表明它们现在是一个字符串带有垃圾数据的对象。同样,这只是正在打印的 QString 的 repr。

关于python - 将 QStringList (PyQt) 转换为普通的 python 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9577175/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com