私はPythonの初心者です(これまでのところ、私はbashスクリプティングに堪能でした)、再帰とshutil.rmtree
に関する質問があります。shutil.rmtree(Pythonの混合階層レベル)
だから、私は次のスニペットを持っている...
keepthese = ('dir1', 'dir2', '.dotfile1', '.dotfile2', 'dir3', '.dotdir1')
dirpath = '/home/' + username + '/parentdir/'
killthese = [os.path.join('/home', username, '/parentdir', item) for item in os.listdir(dirpath) if item not in keepthese]
for x in killthese:
if os.path.isdir(x):
shutil.rmtree(x)
else:
os.remove(x)
(はい、私はそれが非常にきれいに見えるしません知っています)。
本質的に、私はファイル名/ディレクトリのセットを持っています。この例では、dir1
を使用します。
さて、私はなど、.dotdir
、またdir1
という名前の別のディレクトリがあるだろう、dir1
に再帰するディレクトリレイアウトを持っている私が何をしたいのか
は、すべて削除階層の最初のレベルを維持する(とは明らかです親ディレクトリ内のファイル/ディレクトリ/それはkeeptheseと一致しません)、しかし、はすべてのディレクトリにkeeptheseでリストされていますので、すべてを削除したいので(名前だけに基づいて再帰を行うことはできません。 keepthese
のレベルが繰り返されます)。
これは意味がありますか?
私はあなたのコードの字下げを更新しました。 PEP-8で定義されているように、Pythonの標準字下げは、4桁のソフトタブです。 –
ありがとう@YuvalAdam!まだPEP8を通して私のやり方をしています。 :X –