나는 상대적으로 간단한 응용 프로그램을 구축하고 있는데, 디렉토리를 요청하고, 올바른지 확인한 다음, 그 중 하나를 제거하고 다른 내용으로 다시 작성합니다. 이 괴괴 망측 한 행동이 발생했습니다. 설명해 드리겠습니다.누구나 shutil.rmtree 및 shutil.copytree의 이상한 동작을 설명 할 수 있습니까?
대상 폴더 창이 열려 있고 비어 있고 액세스가 거부 된 경우 폴더에서 퇴장했습니다. 제거됩니다. 하지만 비어 있지 않은 경우, 예외가 발생하지 않고 대상 디렉토리 (비어있는 것)가 비게되고 원본 디렉토리의 파일로 채워집니다. 어떤 대상이든 관계없이 대상 폴더를 제거한 다음 원본 대상과 동일한 이름과 내용으로 다시 만들어야하기 때문에 이상합니다.
이것은 비어있을 때 비어 있지 않을 때 디렉토리를 탐색 할 때와 완전히 똑같은 예외가 있어서는 안됩니까? 차이점은 무엇입니까, 그것은 여전히 폴더를 삭제하기로되어 있습니다. 거기에 논리적 인 설명이 있습니까? 또한 예외가있는 경우 왜 어쨌든 디렉토리가 제거됩니까? 이 특정 부분에 대한
코드 (명심하시기 바랍니다 내가 초보자 해요 :))
def Delete(self, dest):
try:
shutil.rmtree(dest)
self.Paste(self.src, dest)
except (IOError, os.error) as e:
print e
def Paste(self, src, dest):
try:
shutil.copytree(src, dest)
except (IOError, os.error) as e:
print e
'Delete()'또는'Paste() '에서 액세스 거부 예외가 발생합니까? 'try' 블록에 문장이 여러 개있을 때를 말하기는 어렵습니다. 질문 전체를 추가하는 것이 가장 좋습니다. 읽을 수 있도록 4 칸만큼 들여 씁니다. – martineau