所以我在我的Itunes库中有一些重复的歌曲(准确地说是844)所以我想我会编写一个小程序来查找并销毁重复项。我遇到的问题是某些目录无法正确读取。
例如,专辑的文件夹名称之一是“Greatest Hits,Vol.2”,但读的是“Greatest Hits,Vol”
显然是“。”造成了问题。有没有人知道一个解决方法,允许我读取完整的文件路径名称(带句点)?
代码的小片段
QString name;
int id;
for (int a = 0; a < dir.entryList(QDir::Files | QDir::AllDirs | QDir::NoDotAndDotDot).length(); ++a)
{
name = path() + "/" + baseName() + "/" + dir.entryList(QDir::AllEntries | QDir::NoDotAndDotDot).at(a);
subFiles.append(new CKClone(id, path() + "/" + baseName() + "/" + dir.entryList(QDir::AllEntries | QDir::NoDotAndDotDot).at(a), this));
// Updating the ID number to account for descendants.
id = subFiles.last()->countDescendants(id);
}
上面的代码只是一个小小的片段,显然不会自行完成一大堆。它只是递归地读入所有文件和目录。
任何帮助将不胜感激,谢谢
JEC
答案 0 :(得分:1)
我实际上在PyQt中对此进行了测试,发现问题不会发生在我身上。这是使用Qt 4.8测试的,因此您可能需要检查它是否是您的版本特有的问题。
像这样的Dir结构:
testing/
a path with spaces/
patH_with_no_spaces/
path with version, vol. 2/
测试代码段
from PyQt4 import QtCore
d = QtCore.QDir("testing")
list(d.entryList(d.AllEntries|d.NoDotAndDotDot))
# output
[
PyQt4.QtCore.QString(u'a path with spaces'),
PyQt4.QtCore.QString(u'path with version, vol. 2'),
PyQt4.QtCore.QString(u'patH_with_no_spaces')
]
您可能希望首先尝试简化代码,以查看代码中是否存在错误。每次循环,构建字符串和追加时,您似乎都在重新生成列表。尝试在循环之前保存该entryList
调用的QStringList结果,并在其余代码中使用相同的对象。