2012-06-03 5 views
25

私はこの関数についてドキュメントを読んだが、私はこれを正しく理解しているとは思っていません。誰かが私に間違った考えを教えてくれたり、正しいとすれば、大きな助け。ここで私の理解です:shutil.rmtree()clarification

shutil.rmtree(path)機能を使用すると、指定されたディレクトリだけが削除され、パス全体は削除されません。 IE:これを使用して

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

、それが唯一の正しい 'のnoob' ディレクトリを削除しますか?完全な道ではない?

+0

「完全な経路ではない」とはどういう意味ですか? 「完全なパスを削除する」とすればどうなりますか? –

+0

'' user/tester/noob ''のような完全なパス。 IEは、テスターとnoobを含むユーザーディレクトリを削除します。 –

+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を削除したい場合は、単にshutil.rmtree('user')を行い、

- user 
    - tester 
    - noob 
    - developer 
    - guru 

は、このようなツリーを想像してみてください。また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を削除しようとしました。それは空であるからですが、userで止まり、削除したくないdeveloper

関連する問題