Я возился с файлами в python на большом жестком диске. Я смотрел на os.walk и glob. Обычно я использую os.walk, поскольку я нахожу его намного опрятным и, кажется, быстрее (для обычных каталогов размера).Быстрее для oswalk или glob?
У кого-нибудь есть опыт с ними обоими и может сказать, что более эффективно? Как я уже сказал, glob кажется медленнее, но вы можете использовать подстановочные знаки и т. Д., Как и при прогулке, вам нужно фильтровать результаты. Вот пример поиска основных дампов.
core = re.compile(r"core\.\d*")
for root, dirs, files in os.walk("/path/to/dir/")
for file in files:
if core.search(file):
path = os.path.join(root,file)
print "Deleting: " + path
os.remove(path)
Или
for file in iglob("/path/to/dir/core.*")
print "Deleting: " + file
os.remove(file)
Походит преждевременной оптимизации для меня. Я взглянул на источник (http://hg.python.org/cpython/file/d01208ba482f/Lib/glob.py и http://hg.python.org/cpython/file/d01208ba482f/Lib/os.py) и убедитесь, что обе функции опираются на 'os.listdir' и' os.isdir', поэтому моя кишка говорит мне, что вы не получите многого в том или ином виде. (Однако, как указано в двух из приведенных ниже ответов, 'os.walk' рекурсирует над подкаталогами, а' glob.iglob' - нет, поэтому сравнивать не имеет смысла). Если у вас заканчивается проблема с производительностью, прокомментируйте несколько подходов. В противном случае просто напишите чистый код. –