Найти тему
КАБАРГА

Command line

Командная строка

Параметры интерфейса

Интерфейс интерпретатора напоминает интерфейс оболочки UNIX, но предоставляет некоторые дополнительные методы вызова:
•При вызове со стандартным вводом, подключенным к устройству tty, он запрашивает команды и выполняет их до тех пор, пока не будет прочитан EOF (символ конца файла, вы можете ввести его с помощью Ctrl-D в UNIX или Ctrl-Z, Enter в Windows).
•При вызове с аргументом имени файла или с файлом в качестве стандартного ввода он считывает и выполняет сценарий из этого файла.
•При вызове с аргументом имени каталога он считывает и выполняет сценарий с соответствующим именем из этого каталога.
•При вызове с помощью команды -c она выполняет инструкции Python, заданные как command. Здесь команда может содержать несколько инструкций, разделенных символами новой строки. В инструкциях Python важен начальный пробел!
•При вызове с -m module-name данный модуль находится в пути к модулю Python и выполняется как скрипт.

В неинтерактивном режиме весь ввод анализируется перед выполнением.

Параметр интерфейса завершает список параметров, используемых интерпретатором, все последовательные аргументы будут заканчиваться в sys.argv – обратите внимание, что первый элемент, нулевой индекс (sys.argv[0]), является строкой, отражающей исходный код программы.
-c <команда>
Выполните код Python в command. команда может представлять собой один или несколько операторов, разделенных символами новой строки, со значительными начальными пробелами, как в обычном коде модуля.

Если задана эта опция, первым элементом sys.argv будет "-c", и текущий каталог будет добавлен в начало sys.path (что позволяет импортировать модули в этом каталоге как модули верхнего уровня).

Вызывает событие аудита cpython.run_command с аргументом command.
-m <имя модуля>
Найдите системный путь для именованного модуля и выполните его содержимое как __main__ module.

Поскольку аргументом является имя модуля, вы не должны указывать расширение файла (.py). Имя модуля должно быть допустимым абсолютным именем модуля Python, но реализация может не всегда обеспечивать соблюдение этого требования (например, она может разрешить вам использовать имя, включающее дефис).

Имена пакетов (включая пакеты пространства имен) также разрешены. Когда вместо обычного модуля указывается имя пакета, интерпретатор выполнит <pkg>.__main__ в качестве основного модуля. Такое поведение намеренно аналогично обработке каталогов и zip-файлов, которые передаются интерпретатору в качестве аргумента скрипта.


Примечание

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

Если задана эта опция, то первым элементом sys.argv будет полный путь к файлу модуля (во время нахождения файла модуля первому элементу будет присвоено значение "-m"). Как и в случае с параметром -c, текущий каталог будет добавлен в начало sys.path.

Параметр -I можно использовать для запуска скрипта в изолированном режиме, где sys.path не содержит ни текущего каталога, ни каталога пользовательских пакетов сайта. Все переменные среды PYTHON* также игнорируются.

Многие стандартные библиотечные модули содержат код, который вызывается при их выполнении как скрипт. Примером может служить модуль timeit:


python -m timeit -s 'настройка здесь' 'сравнительный код здесь'
python -m timeit -h # для получения подробной информации


Вызывает событие аудита cpython.run_module с аргументом module-name.


Смотрите также
эквивалентную функциональность runpy.run_module(), непосредственно доступную коду Python
PEP 338 – Выполнение модулей в виде сценариев


Изменено в версии 3.1: Укажите имя пакета для запуска подмодуля __main__.


Изменено в версии 3.4: также поддерживаются пакеты пространства имен
-
Считывание команд из стандартного ввода (sys.stdin). Если стандартный ввод является терминальным, подразумевается -i.

Если задан этот параметр, первым элементом sys.argv будет "-", и текущий каталог будет добавлен в начало sys.path.

Вызывает событие аудита cpython.run_stdin без аргументов.
<script>
Выполните код Python, содержащийся в script, который должен быть путем к файловой системе (абсолютным или относительным), ссылающимся либо на файл Python, каталог, содержащий файл __main__.py, либо на zip-файл, содержащий файл __main__.py.

Если задан этот параметр, первым элементом sys.argv будет имя скрипта, указанное в командной строке.

Если имя скрипта ссылается непосредственно на файл Python, каталог, содержащий этот файл, добавляется в начало sys.path, и файл выполняется как __main__ module.

Если имя скрипта ссылается на каталог или zip-файл, имя скрипта добавляется в начало sys.path, и файл __main__.py в этом расположении выполняется как модуль __main__.

Параметр -I можно использовать для запуска скрипта в изолированном режиме, где sys.path не содержит ни каталога скрипта, ни каталога пользовательских пакетов сайта. Все переменные среды PYTHON* также игнорируются.

Вызывает событие аудита cpython.run_file с аргументом filename.


Смотрите также
эквивалентную функциональность runpy.run_path(), непосредственно доступную коду Python
Если параметр интерфейса не указан, подразумевается -i, sys.argv[0] является пустой строкой (""), и текущий каталог будет добавлен в начало sys.path. Кроме того, автоматически включается заполнение вкладок и редактирование истории, если это доступно на вашей платформе (см. Конфигурацию Readline).


Смотрите также

Вызов интерпретатора


Изменено в версии 3.4: Автоматическое включение заполнения вкладок и редактирования истории.


1.1.2. Общие параметры
-?-h--справка
Выведите краткое описание всех параметров командной строки.
-V--версия
Выведите номер версии Python и завершите работу. Примером вывода может быть:


Python 3.8.0b2+


Если указано дважды, выведите дополнительную информацию о сборке, например:


Python 3.8.0b2+ (3.8:0c076caaa8, 20 апреля 2019, 21:55:00)
[GCC 6.2.0 20161005]



Новое в версии 3.6: Опция -VV.


1.1.3. Прочие опции
-b
Выдает предупреждение при сравнении байтов или bytearray со str или байтов с int. Выдает ошибку, когда параметр задан дважды (-bb).


Изменено в версии 3.5: Влияет на сравнение байтов с int.
-B
Если задано, Python не будет пытаться записывать файлы .pyc при импорте исходных модулей. Смотрите также PYTHONDONTWRITEBYTECODE.
--проверка-pycs на основе хэша по умолчанию|всегда|никогда
Контролируйте поведение проверки файлов .pyc на основе хэша. Смотрите раздел Недействительность кэшированного байт-кода. Если установлено значение по умолчанию, проверенные и непроверенные файлы кэша байт-кода на основе хэша проверяются в соответствии с их семантикой по умолчанию. Если установлено значение всегда, все файлы .pyc на основе хэша, независимо от того, отмечены они или нет, проверяются на соответствие их соответствующему исходному файлу. Если установлено значение never, файлы .pyc на основе хэша не проверяются на соответствие их соответствующим исходным файлам.

Этот параметр не влияет на семантику файлов .pyc на основе временных меток.
-d
Включите вывод отладки синтаксического анализатора (только для экспертов, в зависимости от параметров компиляции). Смотрите также PYTHONDEBUG.
-E
Игнорируйте все переменные окружения PYTHON*, например, PYTHONPATH и PYTHONHOME, которые могут быть установлены.
-i
Когда скрипт передается в качестве первого аргумента или используется опция -c, войдите в интерактивный режим после выполнения скрипта или команды, даже если sys.stdin не отображается как терминал. Файл PYTHONSTARTUP не читается.

Это может быть полезно для проверки глобальных переменных или трассировки стека, когда скрипт вызывает исключение. Смотрите также PYTHONINSPECT.
-I
Запустите Python в изолированном режиме. Это также подразумевает -E и -s. В изолированном режиме sys.path не содержит ни каталога скрипта, ни каталога пользовательских пакетов сайта. Все переменные окружения PYTHON* также игнорируются. Могут быть введены дополнительные ограничения, чтобы предотвратить внедрение пользователем вредоносного кода.


Новое в версии 3.4.
-O
Удалите инструкции assert и любой код, зависящий от значения __debug__. Увеличьте имя файла для скомпилированных файлов (байт-код), добавив .opt-1 перед расширением .pyc (см. PEP 488). Смотрите также PYTHONOPTIMIZE.


Изменено в версии 3.5: Измените имена файлов .pyc в соответствии с PEP 488.
-OO
Do -O, а также удалите строки документации. Увеличьте имя файла для скомпилированных файлов (байт-код), добавив .opt-2 перед расширением .pyc (см. PEP 488).


Изменено в версии 3.5: Измените имена файлов .pyc в соответствии с PEP 488.
-q
Не отображайте сообщения об авторских правах и версии даже в интерактивном режиме.


Новое в версии 3.2.
-R
Включите рандомизацию хэша. Эта опция действует только в том случае, если переменной окружения PYTHONHASHSEED присвоено значение 0, поскольку рандомизация хэша включена по умолчанию.

В предыдущих версиях Python эта опция включала рандомизацию хэша, так что значения __hash__() объектов str и bytes “засаливались” непредсказуемым случайным значением. Хотя они остаются постоянными в рамках отдельного процесса Python, они непредсказуемы между повторными вызовами Python.

Рандомизация хэша предназначена для обеспечения защиты от отказа в обслуживании, вызванного тщательно подобранными входными данными, которые используют наихудшую производительность конструкции dict, сложность O(n2). Подробности смотрите в разделе
http://www.ocert.org/advisories/ocert-2011-003.html.

PYTHONHASHSEED позволяет вам установить фиксированное значение для секрета начального хэша.


Изменено в версии 3.7: опция больше не игнорируется.