2012-06-03 2 views
25

나는이 함수에 대한 문서를 읽었지만, 나는 이것을 제대로 이해하고 있다고 생각하지 않는다. 누군가 내가 잘못 생각한 것을 나에게 말해 줄 수 있다면, 아니면 내가 옳은지를 말해 줄 수있다. 큰 도움. 여기 내 이해가 있습니다 : shutil.rmtree(path) 기능을 사용하여shutil.rmtree() clarification

기능을 사용하면 전체 경로가 아닌 지정된 디렉토리 만 삭제됩니다. IE :이 사용

shutil.rmtree('user/tester/noob')

, 그것은 단지를 정정 '멍청한 놈'디렉토리를 삭제할 것인가? 완전한 길이 아닌가?

+0

"완전한 경로가 아님"은 무엇을 의미합니까? "전체 경로를 삭제"하면 어떻게됩니까? –

+0

''user/tester/noob ''와 같은 완전한 경로. IE는 테스터와 놈이 들어있는 사용자 디렉토리를 삭제합니다. –

+0

@IT 닌자 : 테스트했을 때의 결과는 무엇입니까? -step 1 – user1801810

답변

40

noob이 디렉토리 인 경우 shutil.rmtree() 함수는 noob 및 그 아래의 모든 파일과 하위 디렉토리를 삭제합니다. 즉, noob은 제거 할 트리의 루트입니다.

24

이것은 지정된 경로의 마지막 디렉토리 만 삭제합니다. 그냥 그것을 밖으로 시도 :

mkdir -p foo/bar 
python 
import shutil 
shutil.rmtree('foo/bar') 

는 ... 단지 'bar'을 제거합니다.

11

여기에 약간의 오해가 있습니다.

나무 같은 상상 :

- user 
    - tester 
    - noob 
    - developer 
    - guru 

그냥 shutil.rmtree('user')을 수행 user을 삭제합니다. user 안에 있으므로 user/testeruser/tester/noob도 삭제됩니다. 그러나 user/developeruser/developer/guru도 삭제됩니다 (user 안에 있음).

rmtree('user/tester/noob')usertester을 삭제한다면, 당신은 어떻게 user이 사라 졌는지 user/developer이 존재하는 것이 의미합니까?


또는 http://docs.python.org/2/library/os.html#os.removedirs과 같은 것을 의미합니까?

디렉터리가 비어있어 실패 할 때까지 제거 된 각 디렉터리의 부모를 제거하려고 시도합니다. 그래서 내 예제 트리에서 os.removedirs('user/tester/noob')은 먼저 noob을 제거한 다음 tester을 제거하려고 시도합니다. 이는 비어 있기 때문에 괜찮습니다. 그러나 developer을 포함하고 있기 때문에 user에서 멈추고 그대로 두었습니다. 삭제하지 않으려 고합니다. .

관련 문제