0

所以我的 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);
        }

上面的代码只是一个小片段,显然它自己并没有完成一大堆。它只是递归地读取所有文件和目录。

任何帮助将不胜感激,谢谢

耶克

4

1 回答 1

1

我实际上在 PyQt 中对此进行了测试,发现我并没有出现这个问题。这是使用 Qt 4.8 测试的,因此您可能需要检查它是否是特定于您的版本的问题。

目录结构如下:

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')
]

您可能想先尝试进一步简化代码,看看它是否是代码中的错误。每次循环、构建字符串和追加时,您似乎都在重新生成列表。尝试在循环之前保存一次该调用的 QStringList 结果entryList,并在其余代码中使用相同的对象。

于 2012-04-08T21:35:01.800 回答