Это вид, что я сделал, когда я хотел дифф каталоги:
#!/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
Обратите внимание, что есть проверка для обычных файлов. Кажется, я вспоминаю, что я столкнулся с файлами, используемыми в качестве семафоров, или которые были написаны одним процессом и прочитаны другим или что-то в этом роде. Это оказалось важным.
Вы можете добавить код для удаления файлов в соответствии с правилами, которые вам нравятся.
показать примеры ... – ghostdog74