Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 1, 2008 11:59:45

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать поиск файлов маске (расширению)

Всем привет,
Нужно поиск файлов по размеру и маске (расширению).
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



Офлайн

#2 Ноя. 1, 2008 12:17:06

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать поиск файлов маске (расширению)

Был такой в стандартной библиотеке.
Даже два.

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)

Офлайн

#3 Ноя. 1, 2008 15:34:39

timas
От:
Зарегистрирован: 2008-08-28
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать поиск файлов маске (расширению)

Наверное более красивый способ по сравнению с регулярками будет использование встроенных функций, типа count или find из модуля string. Но те способы что Shiza привел, все равно круче.



Офлайн

#4 Ноя. 2, 2008 20:05:45

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

как сделать поиск файлов маске (расширению)

В каком смысле круче? Это стандартные модули, как говориться батарейки в комплекте :) можно заглянуть в те модули чтоб посмотреть как там реализовано. Смысл в том, что незачем изобретать велосипед, если до тебя это уже реализовали :)



Офлайн

#5 Ноя. 2, 2008 20:08:17

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать поиск файлов маске (расширению)

Всем спасибо. получилось вот что:

# -*- 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



Офлайн

#6 Ноя. 2, 2008 20:12:14

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать поиск файлов маске (расширению)

igor.kaist
В каком смысле круче?
Я думаю “круче” - в данном случае синоним “кошернее”.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version