как выучить python

Этот удобный python

Предупреждаю сразу: я совсем не программист. Так сложилось, что писать хорошие программы, оптимизировать их и т.п. — не мое :)
Однако, в автоматизации различных действий, выполнения рутинных операций уметь писать простенькие скрипты — очень полезно.
Ну правда, вместо того чтобы искать программу, выполняющую какие-либо действия, проще написать свою.

Для этой цели я уже очень давно использую 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:

  1. Парсинг сайтов, ссылок, текстов и т.п.
  2. Проверка наличия на страницах сайта какого-либо текста (проверка обратных ссылок, например)
  3. Работа с файлами — сортировка, поиск и замена, перемещение и удаление, распаковка и запаковка архивов, резервное копирование
  4. Подготовка данных и приведение их к определенному виду (например генерация XMLфайла импорта в популярный движок WordPress)
  5. Работа с базами данных
  6. Сбор всяческой статистики, анализ данных и рисование графиков и диаграмм

И так далее…

Ну и разумеется закончу списоком литературы для изучения этого языка: берите любую книгу на русском по питону, которую найдете в поисковиках. Для изучения синтаксиса и принципов написания скриптов. Это примерно минут 30.
А дальше практика работы с питоновскими модулями… Стандартные модули очень хорошо документированы (на английском языке), лучше всяких книжек.
Для более продвинутых задач рекомендую книгу Python Cookbook (O’Reily) или ищите по форумам, задавайте вопросы и спрашивайте.

Я думаю каждый сталкивался с какой-нибудь нудной ручной работой, не требующей мозга, которую вам хотелось бы как-то оптимизировать. Надеюсь, после прочтения этой заметки вы узнаете еще про один инструмент для избавления от подобной рутины.

Этот удобный python

Добавить комментарий