2012-04-08 12 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') 
] 

。ループするたびに文字列を作成して追加するたびにリストを再生成しているようです。ループの前に一度呼び出されたentryListのQStringList結果を保存し、残りのコードに対して同じオブジェクトを使用してみてください。

+0

あなたが正しく、私はエントリを何度もポーリングしていました。私は深夜にコード化するときに何が起こるのですか:)ありがとう – jecjackal

関連する問題