저는 Python 학습 곡선이별로 없으며 클래스 인스턴스화와 관련하여 기본적인 것이 빠져 있다고 생각합니다. 아래의 코드에서 재귀 검색 중에 목록에 저장하려는 파일 및 디렉토리의 형식을 포함하는 간단한 클래스가 있습니다. 파일 이름은 클래스의 디렉토리 이름과 별도로 저장되며 두 인스턴스가 있습니다. 하나는 "RFI"텍스트가있는 파일과 디렉토리를 찾고 다른 하나는 "CCO"를 찾고 있습니다. 실행 후 print 문은 RFI 인스턴스의 RFI 일치 및 CCO 인스턴스의 CCO 일치 대신 모든 일치를 인스턴스로 표시합니다. 마치 "fileMatches"와 "dirMatches"가 정적 변수로 동작하는 것과 같습니다 (정확하게 용어를 사용하는 경우). 따라서 하나의 인스턴스 목록에 추가하면 둘 다에 추가됩니다.클래스 인스턴스를 만들고 목록에 추가하십시오.
import fnmatch
import os
path = '.'
allDocs = []
class Docs :
title = []
nameFormats = []
fileMatches = []
dirMatches = []
def __init__ (self, inTitle, inFormats):
self.title = inTitle
self.nameFormats = inFormats
allDocs.append(Docs('RFI','RFI*[0-999]*'))
allDocs.append(Docs('CCO','CCO*[0-999]*'))
for root, dirnames, filenames in os.walk(path):
print ("Root: " + root)
for currDoc in allDocs :
for currDirname in fnmatch.filter(dirnames, currDoc.nameFormats):
currDoc.dirMatches.append(currDirname)
for currFilename in fnmatch.filter(filenames, currDoc.nameFormats):
currDoc.fileMatches.append(currFilename)
print ("------- Results ----------")
for currDoc in allDocs :
print (currDoc.title, currDoc.nameFormats, "directory matches: ", currDoc.dirMatches)
print (currDoc.title, currDoc.nameFormats, " file matches: ", currDoc.fileMatches)
아래는 두 경우 모두에 대해 동일한 값을 보여줍니다 마지막 인쇄 문에서 출력 :
------- Results ----------
RFI RFI*[0-999]* directory matches: ['RFI#04 Blah']
RFI RFI*[0-999]* file matches: ['CCO#02 Blah.pdf', 'CCO#01 Blah.pdf', 'RFI #1.pdf', 'RFI #2.pdf', 'RFI #3.pdf']
CCO CCO*[0-999]* directory matches: ['RFI#04 Blah']
CCO CCO*[0-999]* file matches: ['CCO#02 Blah.pdf', 'CCO#01 Blah.pdf', 'RFI #1.pdf', 'RFI #2.pdf', 'RFI #3.pdf']
아. 그게 효과가 있었어. 많은 감사합니다. 내가 만든 유일한 조정은 "self.title"과 "self.nameFormats"가 샘플 코드에서 두 번 정의되었습니다. 저것이 오타입니까, 아니면 뭔가 빠졌습니까? – buttonsrtoys