Предупреждаю сразу: я совсем не программист. Так сложилось, что писать хорошие программы, оптимизировать их и т.п. — не мое :)
Однако, в автоматизации различных действий, выполнения рутинных операций уметь писать простенькие скрипты — очень полезно.
Ну правда, вместо того чтобы искать программу, выполняющую какие-либо действия, проще написать свою.
Для этой цели я уже очень давно использую python — очень простой и очень мощный язык программирования.
Если кто-то из вас хочет повысить свой уровень пользователя компьютера в этом направлении — очень рекомендую. Он установлен у меня и на работе, и дома и пользуюсь я им практически ежедневно.
Скачать его можно с сайта activestate.com. Использую я версию 2.7 (есть еще Python 3 — но переходить на него я пока не спешу — нет нужды)
А теперь попробую продемонстрировать вам насколько легко и удобно его использовать на примерах.
Выкачивание картинок с чужого сайта
Недавно понадобилось мне выкачать чуть больше 60 изображений с одного буржуйского сайта.
Был конечно ручной вариант: нажимать на каждую картинку, жать правой кнопкой на ней и сохранять на диск. В случае 5-10 картинок — это занимает 5 минут времени и не нужны никакие скрипты.
Однако я убил около минуты на написалие коротенького скрипта. который за минуту-две выкачал все нужные мне картинки в нужную папку.
Для примера приведу подробный, понятный скрипт для выполнения этой операции. Конечно, я его излишне расписал для простоты и наглядности: в реальности он занимает еще меньше строк кода :)
1 2 3 4 5 6 7 8 9 10 11 12 | import os, urllib2 for i in xrange(1,60,1): # генерим адрес картинки url = 'http://site/path/imgname-%d.jpg' % (i) f=urllib2.urlopen(url) imgdata = f.read() # содержимое картинки f.close() # генерим имя картинки на диске - в папке img imgname = 'img\\imgname-%d.jpg' % (i) f=open(imgname,'wb') f.write(imgdata) f.close() |
Вот и весь код. Правда просто? :)
В цикле от 1 до 60 с шагом 1 мы открываем определенного вида url. Его вид надо посмотреть в коде «сайта-донора» и понять что меняется от картинки к картинке.
Потом читаем содержимое этой картинки и сохраняем в нужный файл с именем imgname.
В идеале хорошо бы проверить, что файл является картинкой и защититься от падений скрипта по причине неправильных ответов сервера, таймаутов и т.п.
Но для одноразовой задачи это не слишком нужно.
Быстрая работа с файлами
Допустим вы накачали кучу файлов (пусть 1000). Там разные файлы: архивы, картинки, документы, текстовые файлы. Ну и хотите это дело все разобрать по типу файла. Чтобы картинки — к картинкам, архивы — к архивам и т.д.
Нет ничего проще:
1 2 3 4 5 6 7 8 9 | import os, shutil mydir = 'Новая папка' for fname in os.listdir(mydir): fext = fname.rsplit('.',1)[1] # получаем расширение файла if not os.path.exists(os.path.join(mydir,fext)): # создаем директорию для расширения если ее нет os.makedirs(os.path.join(mydir,fext)) # перемещаем файл в нужную директорию shutil.move(os.path.join(mydir,fname),os.path.join(mydir,fext,fname)) |
По поводу расширения файла: принцип простой. расширением будем считать часть имени файла до первой точки справа. Также можно привести все буквы создаваемой папки к одному регистру, если у вас не Windows
Библиотека shutil мне для копирования-перемещения файлов показалась наиболее удобной, хотя есть и другие способы.
P.S.
Честно говоря, все что тут написал для программиста понятно и без комментариев, а для новичка требуется более тщательное описание каждой строчки. Поэтому если что-то непонятно — спрашивайте. Только прошу не писать советы по оптимизации или улучшению кода: скрипты одноразовые и после выполнения они безжалостно стираются :) Да и нет цели писать универсальные скрипты для подобных задач, мне проще потратить минуту на написание конкретного скрипта :)
Ну и приведу примеры задач которые я обычно решаю с помощью python:
- Парсинг сайтов, ссылок, текстов и т.п.
- Проверка наличия на страницах сайта какого-либо текста (проверка обратных ссылок, например)
- Работа с файлами — сортировка, поиск и замена, перемещение и удаление, распаковка и запаковка архивов, резервное копирование
- Подготовка данных и приведение их к определенному виду (например генерация XMLфайла импорта в популярный движок WordPress)
- Работа с базами данных
- Сбор всяческой статистики, анализ данных и рисование графиков и диаграмм
И так далее…
Ну и разумеется закончу списоком литературы для изучения этого языка: берите любую книгу на русском по питону, которую найдете в поисковиках. Для изучения синтаксиса и принципов написания скриптов. Это примерно минут 30.
А дальше практика работы с питоновскими модулями… Стандартные модули очень хорошо документированы (на английском языке), лучше всяких книжек.
Для более продвинутых задач рекомендую книгу Python Cookbook (O’Reily) или ищите по форумам, задавайте вопросы и спрашивайте.
Я думаю каждый сталкивался с какой-нибудь нудной ручной работой, не требующей мозга, которую вам хотелось бы как-то оптимизировать. Надеюсь, после прочтения этой заметки вы узнаете еще про один инструмент для избавления от подобной рутины.