PHP Inside

 
   
 

Главная


Начало
страница1
страница2
страница3
страница4
страница5
страница6
страница7
страница8
страница9
страница10
страница11
страница12
страница13
страница14
страница15
страница16
страница17
страница18
страница19
страница20
страница21
страница22
страница23
страница24
страница25
страница26
страница27
страница28
страница29
страница30
страница31
страница32
страница33
страница34
страница35
страница36
страница37
страница38
страница39
страница40
страница41
страница42
страница43
страница44
страница45
страница46
страница47
страница48
страница49
страница50
страница51
страница52
страница53
страница54
страница55
страница56
страница57
страница58
страница59
страница60
страница61
страница62
страница63
страница64
страница65
страница66
страница67
страница68
страница69
страница70
страница71
страница72
страница73
страница74
страница75
страница76
страница77
страница78
страница79
страница80
страница81
страница82
страница83
страница84
страница85
страница86
страница87
страница88
страница89

 
 
 

 

 

IPython и Python

Теперь самое интересное . Использовать IPython как интер­ активную оболочку Python очень удобно . В качестве заме­ ны sh она тоже выглядит неплохо . Но разве нам кто - то мо­ жет помешать совместить эти возможности ?

Рассмотрим несколько примеров . Пусть стоит следу­ющая задача - создать в текущем каталоге пустые фай­ лы с расширениями txt и именами , соответствующими ря­ ду простых чисел от 1 до некоторого заданного ( например , 15). То есть нам нужно получить файлы 1 .txt, 2.txt, 3.txt, 5.txt и т . д . Решить её можно так :

Согласитесь , что на bash такая задача решалась бы за­ метно сложнее . А здесь мы в полной мере смогли использо­вать мощь языка Python. Рассмотрим ещё один пример : пе­ риодически нужно считать , сколько строк , содержащих упо­ минание утилиты su, находится в логе /var/log/messages.

В первой строке ( имеются в виду строки ввода ) сохра­ няем в переменную curdir имя текущего каталога ( если вы­ зов системной утилиты используется не сам по себе , а в вы­ ражении на языке Python , то указывать символ « ! » обяза­ тельно , иначе получите ошибку синтаксиса ). Во второй пе­реходим в / var / log ( здесь можно без восклицательного зна­ ка ). В третьей - сохраняем в переменную вывод двух объ­ единённых в «конвейер» утилит . В четвёртой выводим его в виде числа ( для оператора print это особого значения не имеет , я просто хотел показать , что это обычная перемен­ ная , над которой можно выполнять любые преобразования ). Пятая строка возвращает нас в исходный каталог .

Конечно , здесь мы основную работу проделали сила­ ми системных утилит ( в третьей строке ), а не языка Python . Но в этом и преимущество IPython - можно выбирать лю­ бой удобный способ решения задачи . ( В другом случае мо­жет оказаться проще обработать файл средствами Python , и ничто не помешает это сделать .) Ну а для повторного ис­ пользования строки 1-5 сохраняем как макрос sucnt ( стро­ ка 6; функция % macro выводит код созданного макроса , так что вы можете сразу же убедиться , что оболочка вас правильно поняла ). Теперь , введя это имя , мы сможем пов­ торно выполнить всю процедуру .

Обратите внимание , что по умолчанию макросы не со­ храняются между сессиями - чтобы макрос можно было использовать и в будущем , следует явно сохранить его ко­ мандой « store sucnt » .

Если в макрос вам нужно будет внести изменения , не обязательно повторять всю процедуру заново - запус­тите команду ' edit sucnt ', и вы получите возможность под­ править код макроса в своём любимом текстовом редакто­ ре . Только не забывайте , что при выходе из редактора мак­рос будет выполнен .

Кстати , команда edit ( если точнее - % edit ) предназна­чена не только для макросов - с её помощью вы можете редактировать подключённые модули , строки ввода и вы­ вода ( элементы In и Out соответственно ), да и вообще лю­бые блоки текста . Её можно использовать везде , где удоб­ нее вбить в текстовом редакторе сразу несколько строк , чем выполнять их по одной .

Заключение

Как видите , IPython вполне может стать вашей основной ко­ мандной оболочкой . Тесная интеграция с Python делает её очень мощным инструментом . И если вы активно пользуе­ тесь этим скриптовым языком в своей работе , то возмож­ность использовать привычные синтаксические конструк­ции также и для решения «административных» задач бу­ дет совсем не лишней