Чтобы изучить файловую систему, вы можете попробовать os.walk
.Он будет рекурсивно следовать за каталогом, выдавая список файлов и каталогов в каждом каталоге.
Например, при заданной структуре каталогов:
.
├── baz
│ └── bif
│ ├── bang
│ └── file1.doc
└── foo
├── bar
│ └── file3.doc
└── file2.doc
Этот код:
import os
print list(os.walk('.')) # walk current (.) directory
Создает что-то вроде этого:
[('.', ['baz', 'foo'], []),
('./baz', ['bif'], []),
('./baz/bif', ['bang'], ['file1.doc']),
('./baz/bif/bang', [], []),
('./foo', ['bar'], ['file2.doc']),
('./foo/bar', [], ['file3.doc'])]
Затем вы можете просмотреть результаты и скомпилировать список файлов для копирования.
Для копирования файлов пакет shutil
имеет copy
, который просто принимает пути к файлам src / dest.Для получения дополнительной информации см. Документы: http://docs.python.org/library/shutil.html
Редактировать
Более полезные вещи для поиска файлов включают в себя:
- The
glob
пакет: Как следует из названия, соответствие файла стиля глобуса (* .txt, . и т. д.).Я не верю, что это поддерживает рекурсивный поиск, хотя.В этом примере, если я сделаю glob('foo/*.doc')
, я получу результат ['foo/file2.doc']
. fnmatch
из пакета fnmatch
, который может сопоставить шаблон стиля glob со строками.Пример fnmatch('foo.txt', '*.txt')
Вернет True