0

私は数千のフォルダーのみの大きな構造を持っていますが、フォルダーを上位3レベルに保持し、残りを削除することにのみ関心があります。これを行うための再帰的なPythonスクリプトを探しています。どんな助けでも大歓迎です。

4

2 に答える 2

1

テストされていませんが、おそらく次のようになりますos.walk()

import os
import shutil

BASE = '.'
for root, dirs, files in os.walk(BASE):
    n = 0
    head = root
    while head and head != BASE:
        head, _ = os.path.split(head)
        n += 1
    if n == 3:
        for dir in dirs:
            shutil.rmtree(os.path.join(root, dir))
        del dirs[:]      # clear dirs so os.walk() doesn't look for subdirectories
于 2012-07-06T22:24:37.013 に答える
0

これを行う正しい方法はを使用することですがos.walk、ここに安価な答えがあります:

>>> import os
>>> os.system('rm -rf */*/*/*/*')
>>> os.system('rmdir */*/*/*')

これにより、少なくとも4レベルのすべてのファイルが削除され、少なくとも3レベルのルートにあるすべてのディレクトリが削除されます。前のコマンドでコンテンツが削除されたため、rmdir成功します(ディレクトリ以外のすべてのファイルが見つかった場合は文句を言います) 。 。

于 2012-07-06T22:23:00.733 に答える