2012-04-08 23 views
0

所以我有一些重複的歌曲在我的iTunes庫(精確的844),所以我想我會寫一個小程序來查找和銷燬重複。我遇到的問題是一些目錄未被正確讀取。QFileSystem entryInfo不返回完整的目錄名稱

例如專輯中的文件夾名稱之一,是「精選,第2卷」但讀「最巨大的命中卷」

顯然「」正在造成問題。有誰知道一個解決方法,可以讓我讀完整的文件路徑名(帶句號)?代碼

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); 
     } 

上面的代碼的

小snipit只是一個小snipit,顯然不會做自己的一大堆。它只是遞歸地讀入所有的文件和目錄。

任何幫助將不勝感激,謝謝

JEC

回答

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

你可能想先嚐試簡化您的代碼多一點,看看它的一個bug在你的代碼。每次循環,建立一個字符串並追加時,您似乎都會重新生成您的列表。嘗試在你的循環之前保存一次調用的那個entryList的QStringList結果,然後在剩下的代碼中使用同一個對象。

+0

你說得對,我曾多次投票。那就是當我在深夜編碼時會發生什麼:)感謝很多 – jecjackal 2012-04-09 22:43:38

相關問題