我是一個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
。
現在,我已經在dir1
遞歸的目錄結構,也將有一個名爲dir1
,.dotdir
另一個目錄等
我想要做的就是保持層次結構的第一層(顯然每次刪除文件/目錄在parentdir /不匹配keepthese),但在keepthese列出的每個目錄中,我想刪除一切(所以我不能做一個基於名字的遞歸,否則我會刪除第一個迭代次數爲keepthese
)。
這是否有意義?
我更新了代碼中的縮進。在PEP-8中定義的Python中的標準縮進是4個間隔的軟標籤。 –
謝謝@YuvalAdam!仍然通過PEP8工作。 :X –