Это то, что я сделал, когда хотел посмотреть каталоги:
#!/usr/bin/env python
import os, os.path
import stat
def traverse_path(start_dir='.'):
for root, dirs, files in os.walk(start_dir, topdown=False):
for f in files:
complete_path = os.path.join(root, f)
try:
m = os.stat(complete_path)[stat.ST_MODE]
if stat.S_ISREG(m):
yield complete_path[len(start_dir):]
except OSError, err:
print 'Skipping', complete_path
except IOError, err:
print 'Skipping', complete_path
if __name__ == '__main__':
s = set(traverse_path('/home/hughdbrown'))
t = set(traverse_path('/home.backup/hughdbrown'))
for e in s - t:
print e
print '-' * 25
for e in t - s:
print e
Обратите внимание, что есть проверка для обычных файлов. Кажется, я вспоминаю, что сталкивался с файлами, которые использовались как семафоры или которые были записаны одним процессом и прочитаны другим или чем-то еще. Это оказалось важным.
Вы можете добавить код для удаления файлов в соответствии с любыми правилами.