Python: Search for analogs(md5)

Posted by Reason89 | Posted in

   Столкнулся с тем, что на винчестере папка "Учеба" занимает несколько десятков гигабайт различных файлов. Причем половина из них одинаковые и разбросаны как попало. В итоге был написан скрипт, который ищет одинаковый файлы на компьютере. Для определения сходства, находим md5 сумму каждого файла с последующим сравниванием их.
   На данный момент так скажем есть несколько проблем:
1) Не открывает системные файлы
2) Не работает со слишком большим объемом данных, т.е. все хеши и пути к файлам держатся в уме до завершения работы программы, без какой либо записи в файл
     Для настройки работы нужно указать всего 2 параметра.
dname, slash, rash= r"С:/", "*/", "*"
dname - путь к папке, откуда нужно начинать поиск
rash - имя и расширение файла
   В Blogger при размещении постов возникли небольшие проблемы с табуляцией, поэтому каждый знак табуляции заменен на три пробела.
# -*- coding: utf-8 -*-
import hashlib, glob, os, copy
x, y, i, lens = 0, 4, 0, 1
dname, slash, rash= r"С:/", "*/", "*"
s, h = [], []
def hash(put): #Функция для хеширования файлов
   try:
      file = open(put, "r+")  
      buf = file.read()   
      file.close()
      md5 = hashlib.md5(buf)  
      md5hex = md5.hexdigest() 
      s.append(md5hex)
      s.append(put)
   except IOError as e:
      pass
def analog(h): #Функция для поиска одинаковых файлов
   while 1:
      rem_index = raw_input("Enter the index file to remove or enter ""Exit"" to exit: ")
      if rem_index == "Exit":
         break
      else:
         rem_index = int(rem_index)
         os.remove(h[rem_index])
while x < y: #Цикл для поиска файлов
   putc = dname+"*."+rash 
   list = glob.glob(putc)
   x = x+1
   dname = dname + slash
   lenlist = len(list)
   while lenlist != 0: 
      put = list[0]
      hash(put)
      del list[0]
      lenlist = lenlist - 1
#Записываем в лог все найденые файлы и их md5 сумму.
t = copy.deepcopy(s)
log = open(r"C:\log.txt", "w")
try:
   while lens !=0:
      log.write(t[0]+"\n")
      del t[0]
      lens = len(t)
   log.close()
except IndexError as e:
   pass
z = len(s) // 2
while z > 0: #Цикл поиска одинаковых файлов
   smd5 = s[0]
   sput = s[1]
   del s[1], s[0]
   numb = s.count(smd5) #Проверяем количество вхождений
   if numb == 0:
      pass
   else:
      while numb != 0: #Заносим одинаковые файлы в список h
         index = s.index(smd5) # Получаем индекс
         index1 = index+1
         h.append(sput)
         h.append(s[index1])
         print "Coincidence:\n"+str(i)+":"+sput+"\n"+str(i+1)+":"+s[index1]
         del s[index1], s[index]
         numb = numb - 1
         i = i+2
      z = len(s) // 2
#Запрашиваем какие файлы удалять
try:
   analog(h)
except IndexError as e:
   print "The index value is incorrect"
analog(h)
   except ValueError as e:
print "The value is incorrect"
   analog(h)
except MemoryError as e:
   print "Not enough memory, the amount of data too large"
   print "Work completed"
П.С. В отличии от предыдущих моих поделок, здесь я уже начал использовать функции и исключения.

Перезд на reason89.ru

Posted by Reason89 | Posted in

   Зарегистрировал домен 2 уровня на 2domains.ru. Регистрация заняла 4 дня, но это по большей мере связано с тем, что все выпало на выходные и мои паспортные данные на выходных проверить похоже было некому. Сегодня домен reason89.ru получил статус VERIFIED, и я принялся настраивать DNS для blogger.com.
   Сперва мне показалось не интересным использовать всего 2 DNS сервера, которые стандартно предлагает мой регистратор, и потому я полез в сеть искать бесплатные DNS сервисы. И даже нашел xname.org. Но по счастливой воле случая увидел всплывающую рекламу на 2domains.ru о том, что они предлагают автоматическую настройку для популярных сервисов блога. Перейдя по ссылке, и буквально кликнув 2 раза мышью автоматически настроил DNS серверы.
   Еще один интересный факт, при изменении данных в панели управления блогом пришлось немного наколоть систему. При указании домена, Blogger.com требует указать еще и субдомен, в моем случае что то вроде blog.reason89.ru. В сети нашел гениальное решение, прописать домен с заглавной буквы REASON89.RU.
   Сейчас с помощью этого поста проверю в какой работоспособности осталась RSS лента, ну и чуть позже начну добавляться в поисковики.
   П.С. Не много напрягает то, что при переходе на старый адрес rsn-nsr.blogspot.com вместо обычного редиректа, выводят страницу с предупреждением.

Sony Alpha DSLR-A390L

Posted by Reason89 | Posted in ,

   Буквально неделю назад приобрел Sony Alpha DSLR-A390L 18-55mm Kit (14.2Mpix 4592x3056 MS/SDHC АККУМ LCD2.7" USB2.0). Первые дни даже не знал с какой стороны к ней подойти, как не пытался фотографировать без автофокуса, все фотографии получались смазанными или темными. Но посидев пару ночей за прочтением различной литературы и журналов, более менее набрался теоретических знаний. Фотографии уже получаются гораздо лучшего качества. Плюс потихоньку разобрался для чего все кнопки на корпусе камеры. И уже не пугаюсь многих незнакомых ранее слов. Хотя с каждым днем открываю для себя много нового и интересного.
   Первоначально камера рассчитана для новичков в этом деле, этому способствует русскоязычная подробная справка в самой камере и различные подсказки. Не может не радовать и русскоязычная инструкция, которая толще моих инструкции от телефона и ноутбука вместе взятых.
   Параметры китового объектива конечно не дают насладиться всеми прелестями цифровой фотографии, но на первое время мне вполне хватит. А дальше, если меня затянет это увлечение, то можно будет уже докупить новые объектив и фотовспышку, для более профессиональной съемки. Ну и потихоньку закупаться различными аксессуарами вроде кисточки для чистки объектива, блендой и светофильтрами. Завтра пойду в магазин, приобрету какую нибудь сумку LowePro из 140 серии. Дизайн у них немного разный, но размеры как раз под мою камеру и 2 объектива, плюс различная мелочевка. Читая отзывы перед покупкой, я везде натыкался на то, что у нее слабый аккумулятор, хотя у меня он держится прекрасно. Я игрался с камерой без подзарядки первые три дня, практически не выключая ее.
   Описывать все параметры камеры мне еще рано, во всяком случае я еще мало что в этом понимаю, потому и лезть в это пока не буду. Сейчас главное набираться опыта.
   Ну а из прочитанной литературы мне понравилась книга "Цифровая фотография от А до Я" Артур Газаров, а из журналов "Digital photo & video camera" .

Мастер Кит

Posted by Reason89 | Posted in

   По воле случая столкнулся с конструкторами от фирмы Мастер Кит. Часто видел их на прилавках магазинов электроники, но все как то обходил стороной.
   Купив один из конструкторов, был приятно удивлен. Подробное описание схемы, описание маркировки элементов, плюс на печатной плате даже изображено где и какой элемент стоит, вплоть до обозначения катода и анода. Собирать такие вещи одно удовольствие, которое правда стоит не дешево. т.е. если самому покупать элементы и вытравлять плату, то все обходится в 3-4 раза дешевле.
   В ассортименте у Мастер Кит огромное количество различных интересных вещей. Начиная с простых сувениров и заканчивая различного рода программаторами. Чтобы лишний раз не переплачивать, решил поискать в сети инструкции и спецификации к этим вещам, может кто да выложил. В результате нашел их книгу  "Собери сам 55 электронных устройств из наборов". В них правда не все так подробно как в инструкции к самому конструктору, но принципиальная схема и спецификация  элементной базы есть, а больше в принципе ничего и не нужно.

   П.С. На момент написания этого сообщения, у них похоже полетела БД. Сайт работает определенно не так как надо.

Python: Подробный справочник.

Posted by Reason89 | Posted in ,

   Раньше постоянно пренебрегал интернет магазинами. Как то не испытывал к ним доверия. Но получилось так, что книгу, которую я хотел приобрести, в обычном книжном магазине купить практически не реально. Да и читать литературу с монитора уже изрядно надоело, надо начинать беречь глаза. Хотя если честно, я в электронной версии ее на просторах интернета так и не нашел.
   Поспрашивав народ, о том какому магазину отдать предпочтение, все мне посоветовали books.ru. Очень удобные способы оплаты, разнообразные способы доставки, как говорится, лишь бы платили. Плюс цены гораздо дешевле, чем в аналогичных магазинах. То есть, если брать тот же самый ozon.ru, то книга на нем  обошлась на 300 рублей дороже. Пришла книга относительно быстро, заказал я ее 15 января, а уже 29 домой пришло уведомление с почты. Как раз как я и рассчитывал, к концу сессии. Всё обошлось мне в 1050 рублей.
   Теперь, что касается книги. Скажем так, я ожидал увидеть книжку поменьше. Огромная  книга весом более  килограмма, в мягкой обложке,  с  не совсем надежным переплетом  для 800 страниц.
   26 глав, которые подробно затрагивают работу с различными модулями. В отличие от других книг по Python, которые  практически учат только работе со списками, словарям и кортежами. Очень сильно порадовал алфавитный указатель в конце книги, не в каждой энциклопедии такой встретишь. Если давать книги более полную оценку, то книга самое то для человека, который имеет уже начальные навыки в программировании, но хочет продвинуться дальше.
   П.С. В комплект с книгой положили несколько закладок с рекламой. В том числе и с кодом на 200 рублей на jino.ru, которые мне в принципе не нужны.