Найти - Пользователи
Полная версия: как сделать поиск файлов маске (расширению)
Начало » Python для экспертов » как сделать поиск файлов маске (расширению)
1
qman
Всем привет,
Нужно поиск файлов по размеру и маске (расширению).
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
shiza
Был такой в стандартной библиотеке.
Даже два.

http://www.python.org/doc/2.5.2/lib/module-glob.html
http://www.python.org/doc/2.5.2/lib/module-fnmatch.html
timas
Наверное более красивый способ по сравнению с регулярками будет использование встроенных функций, типа count или find из модуля string. Но те способы что Shiza привел, все равно круче.
igor.kaist
В каком смысле круче? Это стандартные модули, как говориться батарейки в комплекте :) можно заглянуть в те модули чтоб посмотреть как там реализовано. Смысл в том, что незачем изобретать велосипед, если до тебя это уже реализовали :)
qman
Всем спасибо. получилось вот что:
# -*- 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
shiza
igor.kaist
В каком смысле круче?
Я думаю “круче” - в данном случае синоним “кошернее”.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB