2012-04-08 3 views
0

그래서 내 아이튠즈 라이브러리 (정확하게는 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

관련 문제