Форум сайта python.su
Всем привет,
Нужно поиск файлов по размеру и маске (расширению).
getsize позволит искать файлы по размеру, но как сделать поиск по маске (по определенному расширению)? Использовать регулярные выражения для определения наличия в файле name нужного расширения? Или есть более красивый способ?
from os.path import join, getsize
import os
for root, dirs, files in os.walk('/temp/'):
print root, "consumes",
print sum([getsize(join(root, name)) for name in files]),
print "bytes in", len(files), "non-directory files"
for name in files:
print getsize(join(root, name)), name
Офлайн
Был такой в стандартной библиотеке.
Даже два.
http://www.python.org/doc/2.5.2/lib/module-glob.html
http://www.python.org/doc/2.5.2/lib/module-fnmatch.html
Отредактировано (Ноя. 1, 2008 12:28:44)
Офлайн
Наверное более красивый способ по сравнению с регулярками будет использование встроенных функций, типа count или find из модуля string. Но те способы что Shiza привел, все равно круче.
Офлайн
В каком смысле круче? Это стандартные модули, как говориться батарейки в комплекте :) можно заглянуть в те модули чтоб посмотреть как там реализовано. Смысл в том, что незачем изобретать велосипед, если до тебя это уже реализовали :)
Офлайн
Всем спасибо. получилось вот что:
# -*- coding: utf8 -*-
from os.path import join, getsize
import os
import fnmatch
big_size = 100000#размер файла в байтах
file_ext = '*.vdb'#расширение файлов для поиска
path = '/temp/download' #путь поиска вложенных файлов
for root, dirs, files in os.walk():
for name in files:
SizeFile = getsize(join(root, name))
if SizeFile> big_size:
if fnmatch.fnmatch(name, file_ext):
print name, SizeFile
Офлайн
igor.kaistЯ думаю “круче” - в данном случае синоним “кошернее”.
В каком смысле круче?
Офлайн