Как запустить программу через командную строку в питоне

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

2016learnpython / 3 Семинар — Mystem.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Cannot retrieve contributors at this time
81 lines (43 sloc) 10.6 KB

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Copy raw contents

Copy raw contents

Семинар 3: Mystem

Mystem

Запуск программ из командной строки

Кроме программ, которые имеют GUI (графический, оконный интерфейс), часто приходится использовать такие программы, которые управляются из командной строки. Ещё она называется терминалом или консолью.

006 Как запускать Python программы в Windows

Для того, чтобы запустить командную строку, в Windows нужно найти среди других программу cmd.

В начале того, что показывает интерфейс командной строки, обычно написано, какое место в системе программа считает рабочим. Например, C:Usersstudent . После этого обычно мы видим знак т.н. приглашения командной строки, то есть сигнал того, что программа готова к работе и ждёт действий от пользователя. В Windows это обычно знак больше, > .

С помощью набора команд, которые отправляются на исполнение с помощью клавиши Enter , можно передвигаться по диску и запускать другие программы.

Запуск программ обычно выглядит так. Сначала нужно написать путь к запускаемой программе: C:some_prog.exe . Путь может быть и абсолютным, и относительным. Считается он относительно того места, которое показывается перед приглашением.

Иногда программы нужно запускать не сами по себе, а с определёнными аргументами или ещё их называют параметрами (похоже на аргументы функции в питоне). Тогда эти аргументы пишутся после пути к программе через пробел. Если сам аргумент тоже содержит пробел, его нужно обернуть в кавычки: C:some_prog.exe argument1 «argument 2»

Кроме того, среди таких аргументов есть такие, которые принято называть опциями или ключами, они начинаются с символа дефиса: C:some_prog.exe -a -b . Их можно «склеивать»: C:some_prog.exe -ab .

Какие у программы возможны аргументы и опции, в каком порядке они должны идти при запуске из командной строки, обычно описано в документации к программам.

Через командную строку можно, например, запускать скрипты на питоне. Тогда запускаемой программой будет интерпретатор питона, а аргументом — путь к собственно скрипту: C:Python34python.exe C:myscript.py

Mystem — это свободно распространяемый морфологический анализатор для русского языка с закрытым исходным кодом. То есть мы можем его бесплатно скачать с сайта и пользоваться им, но не можем посмотреть, что у него внутри и как оно работает.

Як запустити #python скрипт на #windows

Mystem был придуман одним из создателей Яндекса Ильёй Сегаловичем. Некоторый потомок mystem’а до сих пор работает внутри большого поисковика Яндекса, анализируя слова при поиске.

My-stem значит my stemmer, стемминг — это разбиение формы на основу и флексию. Но на самом деле Mystem может гораздо больше: устанавливать словарную форму слова, определять часть речи и грамматическую форму слова. В последних версиях Mystem умеет и выбирать из нескольких возможных грамматических разборов один, наиболее верный.

Читайте также:
Программа изменить тип файла

У Mystem нет графического оконного интерфейса, запустить его можно только из командной строки.

Скачать Mystem можно отсюда, а тут лежит его документация.

Mystem не требует специальной инсталляции в систему. Достаточно, чтобы исполняемый файл с программой, подходящей для вашей версии операционной системы, находился на вашем компьютере.

Как читать документацию Mystem

На странице документации описаны разные возможности вызова Mystem из командной строки. В зависимости от параметров, с которыми мы вызовем программу, мы получим разный результат.

Примеры, которые там приведены, рассчитаны на пользователя Unix-подобной операционной системы. То есть не Windows.

В начале примеров вызова стоит знак доллара, $. Это не значит, что его вам тоже нужно набирать, если вы хотите воспроизвести эти примеры. Доллар — это аналог приглашения командной строки, просто не в Windows, а в Unix-подобных системах. Если вы берете примеры вызова со страницы документации за основу, игнорируйте знак доллара.

В документации написано: $ mystem input . На практике для пользователей Windows это будет значить что-то вроде C:mystem.exe input.txt .

В документации написано «стандартный ввод» и «стандартный вывод», это значит то, что вводится в командной строке или выводится в тот же терминал. Если не используются стандартный ввод и вывод, то используются файлы (выводной файл Mystem способен создать сам).

В 3-й версии Mystem кодировка по умолчанию — utf-8. В первых версиях — cp1251. Кодировка по умолчанию в командной строке Windows — cp866. Из-за этого Mystem может не понимать слова, которые попадают к нему из стандартного ввода.

Как запускать Mystem

Об этом довольно хорошо и подробно написано на странице документации, её нужно внимательно изучить и попробовать разные вариант опций.

Особое внимание нужно уделить опции -d , она заставляет анализатор выбирать только один разбор из возможных. При этом выбор происходит только между разными частями речи. Если у одной части речи возможны разные разборы (например, разные падежи одного и того же существительного), то эти разборы не отбрасываются. Иначе говоря, Mystem снимает только частеречную омонимию. Омонимию форм он не снимает.

Как запускать Mystem из питона?

Для запуска сторонних программ, имеющих интерфейс командной строки, в питоне есть system, предоставляемая модулем os: os.system(«C:mystem.exe input.txt output.txt») . Перед добавлением такой конструкции в код, необходимо импортировать модуль os.

Это нужно, чтобы, например, обработать много файлов циклом:

import os inp = «input_texts» lst = os.listdir(inp) for fl in lst: os.system(r»C:mystem.exe » + inp + os.sep + fl + » output_texts» + os.sep + fl)

Этот код берёт из директории input_texts все лежащие в ней файлы, отдаёт на разметку майстему и кладёт результат в соседнюю директорию output_texts.

Есть возможность запускать mystem и с помощью специального модуля, pymystem3 (и некоторых других), который нужно специально установить (его нет в стандартной сборке питона). Это проще и удобнее, потому что с тем, что выдаёт mystem, можно сразу работать как с питоновскими структурами данных. Но медленнее. Иногда гораздо-гораздо медленнее, чем разметить один файл mystem’ом сразу.

Скачать mystem и попробовать разные опции его запуска на практике. Посмотреть, чем результат вызова с одними опциями отличается от результата вызова с другими опциями.

Читайте также:
Как узнать какой программой занят порт

Источник: github.com

Аргументы командной строки с Python и sys.argv

Аргументы командной строки с Python и sys.argv

Часто, при запуске программ Python через командную строку, возникает необходимость передачи дополнительных аргументов. Например, если программа обрабатывает данные, считанные из файла, вы можете передать имя файла своей программе, а не жестко кодировать значение в исходном коде. Для этого, можно использовать функцию input(), что не всегда удобно. Гораздо удобнее, было бы передать параметры непосредственно при запуске, после имени сценария.

Python предоставляет механизм для захвата и извлечения аргументов командной строки. Эти значения, затем, можно использовать для изменения поведения программы.

Их можно использовать посредством модуля sys, используя в коде программы sys.argv. И перейдем к примеру:

# создадим файл test.py

# импортируем модуль
import sys

# отобразим список аргументов командной строки
print(‘Список аргументов:’, str(sys.argv))

# и количество аргументов
print(‘Число аргументов’, len(sys.argv))

Теперь, запустим файл test.py вместе с аргументами:

>>>python test.py 1 2 3 4 5

Список аргументов: [‘test.py’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
Число аргументов 6

Как можно заметить, первый элемент в списке это название самого скрипта. И чтобы получить лишь список аргументов, без названия скрипта, используем следующий вариант кода:

Получив представление о sys.argv, можно манипулировать данными переданными в командной строке. Попробуем перевернуть буквы в слове:

# запуск
>>>python reverse.py myrusakov

Таким образом, добавление возможности обработки аргументов командной строки Python способно обеспечить удобный интерфейс для нашей программы. Это похоже на то, что представляет собой графический пользовательский интерфейс для визуального приложения.

Создано 26.08.2021 10:29:53

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Источник: myrusakov.ru

    Системные команды с помощью Python (os.system())

    Возможно, нам потребуется интегрировать функции для выполнения некоторых задач системного администрирования в Python. К ним относятся поиск файлов, выполнение некоторых команд оболочки, выполнение некоторой расширенной обработки файлов и т. д. И для этого нам нужен какой-то способ взаимодействия между системой и интерпретатором Python.

    Выполнение командных строк с помощью Python можно легко выполнить с помощью некоторых системных методов из os module .

    Но с появлением модуля subprocess (с намерением заменить некоторые старые модули) доступ к командной строке стал намного проще в использовании. А также для управления выводом и избежания некоторых ограничений традиционных методов.

    System Commands In Python

    Выполнение команд оболочки в Python

    Теперь, когда мы узнали о системных командах в Python. Давайте посмотрим, как мы можем реализовать то же самое.

    Читайте также:
    Программа переезд от центра занятости отзывы

    1. Использование метода os.system()

    Как указывалось ранее, выполнение команд оболочки в Python можно легко выполнить с помощью некоторых методов модуля os . Здесь мы собираемся использовать широко используемый os.system() .

    Эта функция реализована с использованием функции C system() и, следовательно, имеет те же ограничения.

    Метод принимает системную команду как строку на входе и возвращает код вывода.

    В приведенном ниже примере мы пытаемся проверить версию Python в нашей системе с помощью командной строки.

    import os command = «python —version» #command to be executed res = os.system(command) #the method returns the exit status print(«Returned Value: «, res)
    Python 3.7.4 Returned Value: 0

    Здесь res сохраняет возвращенное значение (код выхода = 0 для успеха). Из выходных данных видно, что команда выполнена успешно, и мы получили нашу версию Python, как и ожидалось.

    2. Использование модуля подпроцесса

    Модуль subprocess поставляется с различными полезными методами или функциями для создания новых процессов, подключения к их каналам ввода / вывода / ошибок и получения их кодов возврата.

    В этом руководстве мы рассматриваем методы call() и check_output() поскольку они просты в использовании и надежны. Но для получения дополнительной информации вы всегда можете обратиться к официальной документации.

    2.1. Метод call()

    Теперь перейдем к методу subprocess.call() .

    Метод call() принимает аргументы командной строки, переданные в виде списка строк или с аргументом оболочки, установленным в True . И возвращает нам код выхода или статус.

    В приведенном ниже фрагменте кода мы пытаемся установить pandas с помощью PIP из оболочки.

    import subprocess command = «pip install pandas» #command to be executed res = subprocess.call(command, shell = True) #the method returns the exit code print(«Returned Value: «, res)
    Collecting pandas Downloading pandas-1.0.3-cp37-cp37m-win32.whl (7.5 MB) Requirement already satisfied: pytz>=2017.2 in c:userssnehaappdatalocalprogramspythonpython37-32libsite-packages (from pandas) (2019.3) Requirement already satisfied: numpy>=1.13.3 in c:userssnehaappdatalocalprogramspythonpython37-32libsite-packages (from pandas) (1.18.1) Requirement already satisfied: python-dateutil>=2.6.1 in c:userssnehaappdatalocalprogramspythonpython37-32libsite-packages (from pandas) (2.8.1) Requirement already satisfied: six>=1.5 in c:userssnehaappdatalocalprogramspythonpython37-32libsite-packages (from python-dateutil>=2.6.1->pandas) (1.14.0) Installing collected packages: pandas Successfully installed pandas-1.0.3 Returned Value: 0

    Как видим, команда выполнена успешно с zero возвращаемым значением.

    2.2. Метод check_output()

    Вышеупомянутые методы выполняют успешно переданную команду оболочки, но не дают пользователю свободы манипулировать способом получения вывода. Для этого на check_output() должен check_output() метод подпроцесса check_output() .

    Метод выполняет переданную команду, но вместо возврата статуса выхода на этот раз возвращает bytes объект.

    Присмотритесь к приведенному ниже примеру, где мы снова пытаемся установить модуль pymysql (уже установленный).

    import subprocess command = «pip install pymysql» #command to be executed res = subprocess.check_output(command) #system command print(«Return type: «, type(res)) #type of the value returned print(«Decoded string: «, res.decode(«utf-8»)) #decoded result
    Return type: Decoded string: Requirement already satisfied: pymysql in c:userssnehaappdatalocalprogramspythonpython37-32libsite-packages (0.9.3)

    Здесь, как и в предыдущих случаях, res хранит объект, возвращаемый методом check_output() . Мы видим, что type(res) подтверждает, что объект имеет bytes тип.

    После этого печатаем декодированную строку и видим, что команда успешно выполнена.

    Вывод

    Итак, сегодня мы узнали, как мы можем выполнять системные команды с помощью системной команды Python (os.system()) и модуля подпроцесса. Мы рассмотрели здесь еще несколько команд, связанных с Python, но стоит отметить, что методы этим не ограничиваются.

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru