Sys argv python linux

sys.argv() in Python

The sys module consists of functions and variables that strongly interact with the interpreter. The sys module comes pre-loaded in Python and does not require any installation. Amongst the many functions and variables are sys.argv(). Sys.argv() is used to gather command line user input. In this tutorial, we will be learning about sys.argv(), and its common uses.

In essence, Sys.argv() is a list of all the command line inputs. When the script is executed, you can feed its user input in various ways, and one such way is via the command line. In this first instance, let us suppose that we have a simple script called main.py.

While executing the script, we’re going to add a few command line arguments in addition to the script name. If we were to execute the script, we would get the following:

You notice here that the command line arguments did not interfere with the script itself.

So, now, let’s modify the script a little bit. So, suppose that now we have a script called main.py with the following content:

If we were to execute the script, we would get the following:

As you can see, we get a list with one item in it because we only supplied it with one item, the script name. Now suppose that we supply it a slightly different command line input arguments.

If we were to execute the script, we would get the following:

Now, what happens is that it retrieves everything we provided via the command line or all the command line arguments provided by the user. In my case, I added ‘hello world’ after the name of the script, and as such, it retrieved it to the list.

Sys.argv[0] is the first argument in the list. In all cases, the first argument is always the name of the script.

When executing the script, we would type the following:

Alternatively, you may wish to retrieve a specific command line argument. For example, you may wish to retrieve the user’s input via command line arguments when writing a Python program. In this scenario, we’ll retrieve the first three command line arguments.

name1 = sys . argv [ 1 ]
name2 = sys . argv [ 2 ]
name3 = sys . argv [ 3 ]

print ( «hello» , name1 , ’ , ’ , name2 , ’ and ’ , name3 )

When executing the script, we would type the following for example:

Here, sys.argv[1] is the second command line argument, while sys.argv[2] is the third command line argument, and sys.argv[3] is the fourth command line argument. This is so because although the index begins at 0, and sys.argv[0] is the name of the script.

So what if the user was expected to enter n number of inputs and we didn’t know how many inputs there were? Suppose the following script was written:

Читайте также:  Manjaro linux установка принтера

for value in list :
print ( value )

When executing the script, we would type the following for example:

Here, sys.argv[1:] means that all values from sys.argv[1] are used until the end of the list. In this case, we can add as many command line arguments as we want.

Please note that all values captured by the variable sys.argv are strings. So suppose that we wanted to add three numbers that the user inputs.

num1 = sys . argv [ 1 ]
num2 = sys . argv [ 2 ]
num3 = sys . argv [ 3 ]

list = [ num1 , num2 , num3 ]
total = sum ( list )
print ( total )

If we were to execute the script, we would get the following:

What we get is a TypeError. This is because all of the values obtained from the list are “string” values while we require integer values to add. In order to correct this, we would have to convert the strings to integers:

num1 = int ( sys . argv [ 1 ] )
num2 = int ( sys . argv [ 2 ] )
num3 = int ( sys . argv [ 3 ] )

list = [ num1 , num2 , num3 ]
total = sum ( list )
print ( total )

If we were to execute the script, we would get the following:

We added int(sys.arg[n]) ensured that we converted the string to an integer.

Sys.argv errors

One of the most common errors that are thrown (when we don’t use sys.argv[1:] but rather specify the nth value using sys.argv[n]) is that of an IndexError (list index out of range). What this error means is that the command line arguments were not specified, and in order to avert this error, we must take a few precautionary steps:

if len ( sys . argv ) 4 :
print ( «please enter three names» )

if len ( sys . arv ) == 4 :
name1 = sys . argv [ 1 ]
name2 = sys . argv [ 2 ]
ame3 = sys . argv [ 3 ]

print ( «hello» , name1 )
print ( «hello» , name2 )
print ( «hello» , name3 )

When executing the script, we would type the following for example:

In order to avert the error, we must adjust the length of the command line arguments. In the previous example, we have three names and a script name, which means that there are a total of 4 values. Thus, we say that if the length is greater than 4 or less than 4, then ask the user to input three names; else, print out the three names.

The sys module is very important as it allows interaction with the Python interpreter. In particular, the variable sys.argv is a list that contains all of the users’ inputted command line arguments. Sys.argv[0] defines the name of the script in all cases. Although sys.argv() is very commonly utilized to gather command line arguments, another even better way of gathering command line arguments is by using argparse. But that’s a story for another day!

Читайте также:  How to change disk in linux

Источник

Разбираем модуль sys

Модуль sys предоставляет системе особые параметры и функции. В данном разделе мы рассмотрим следующее:

  • sys.argv
  • sys.executable
  • sys.exit
  • sys.modules
  • sys.path
  • sys.platform
  • sys.stdin/stdout/stderr

sys.argv

Значение sys.argv – это список аргументов командной строки, которые причастны к скрипту Python. Первый аргумент, argv[0], имеет аналогичное скрипту Python наименование. В зависимости от платформы, на которой вы работаете, первый аргумент может содержать полный путь к скрипту или к названию файла. Для дополнительных деталей обратитесь к документации. А тем временем, попробуем поработать с парочкой примеров, чтобы познакомиться с этим инструментом:

Если вы запустите это в интерпретаторе, вы получите список с пустой строкой. Давайте создадим файл под названием sysargv.py, со следующим содержимым:

Теперь запустите код в IDLE. Вы увидите список с одним элементом, который содержит путь к вашему скрипту. Попробуем передать скрипту несколько аргументов. Откройте окно терминала \ консоли и при помощи команды cd измените каталоги на тот, в котором находится скрипт. После этого, запустите что-то наподобие этого:

sys.argv

Обратите внимание на то, что будет выведено на экран:

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

sys.executable

Значение sys.executable – это полный путь к интерпретатору Python. Это очень полезно, когда вы используете чей-то компьютер, и вам нужно узнать, где установлен Python. В некоторых системах, данная команда не сработает, и выдаст пустую строку с надписью None. Посмотрим, как пользоваться этой функцией:

sys.exit

Данная функция позволяет разработчику выйти из Python. Функция exit принимает необязательный аргумент, обычно целое число, которое дает статус выхода. Ноль считается как успешное завершение. Обязательно проверьте, имеет ли ваша операционная система какие-либо особые значения для своих статусов выхода, чтобы вы могли следить за ними в своем собственном приложении. Обратите внимание на то, что когда вы вызываете exit, это вызовет исключение SystemExit, которое позволяет функциям очистки работать в конечных пунктах блоков try / except. Давайте взглянем на то, как вызывается данная функция:

Запустив данный код в IDLE, вы увидите возникшую ошибку SystemExit. Давайте создадим несколько скриптов для теста. Для начала вам нужно создать основной скрипт, программу, которая будет вызывать другой скрипт Python. Давайте назовем его “call_exit.py”. Скрипт должен содержать следующее:

Теперь создайте скрипт Python под названием“exit.py” и сохраните его в той же папке. Вставьте в него следующий код:

Теперь давайте запустим его:

sys.exit

Как вы могли заметить, написанный нами скрипт exit вернул ноль, так что он успешно заработал. Получается, мы заодно научились вызывать разные скрипты Python изнутри самого Python!

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Читайте также:  Rescue disk for linux

sys.path

Значение функции path модуля sys – это список строк, которые указывают путь поиска для модулей. Как правило, данная функция указывает Python, в каких локациях смотреть, когда он пытается импортировать модуль. В соответствии с документацией Python, sys.path инициализируется из переменной окружения PYTHONPATH, плюс зависимое от установки значение, указанное по умолчанию. Давайте взглянем на пример:

Данная функция может быть весьма полезной во время отладки причины, по которой модуль не импортируется. Вы также можете изменить путь. Так как данная функция является путем, мы можем добавлять или удалять путь из неё. Давайте взглянем на то, как добавлять путь:

;)

Удаление пути я оставлю как задание для читателя

sys.platform

Значение sys.platform – идентификатор платформы. Вы можете использовать sys.platform чтобы добавлять модули к sys.path, импортировать разные модули, в зависимости от платформы, или запускать разные части кода. Давайте взглянем:

В данном примере мы видим, что Python работает в Windows. Вот пример того, как мы можем воспользоваться данной информацией:

Данный код показывает способы проверки того, используем ли мы определенную операционную систему. Если мы используем Windows, мы получим определенную информацию из реестра Windows, при помощи модуля Python под названием _winreg. Если мы используем Linux, мы можем выполнить команду ls, чтобы получить информацию о каталоге, в котором мы находимся.

sys.stdin / stdout / stderr

Stdin, stdout и stderr сопоставляются с файловыми объектами, которые соответствуют стандартным входам, выходам и потокам ошибок интерпретатора соответственно. Функция stdin используется для всех входов, используемых интерпретатором, за исключением скриптов, тогда как stdout используется для выходов операторов print и expression. Главная причина, по которой я акцентирую на этом внимание, заключается в том, что в какой-то момент вам нужно будет перенаправить stdout или stderr, или обе функции к файлу, такому как log, либо же какой-либо дисплей в пользовательском графическом интерфейсе, созданным вами. Вы также можете перенаправить stdin, но с такими случаями я практически не сталкивался.

Подведем итоги

Существует много других значений и методов в модуле sys. Обратитесь к документации Python, а именно к секции 27.1, если вам нужно углубиться в данный вопрос. Мы многому научились из данной статьи, поздравляю. Теперь вы знаете, как выйти из программы Python, как получить информацию о платформе, работать с аргументами, переданными командной строке, и многому другому.

Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.

E-mail: vasile.buldumac@ati.utm.md

Образование
Universitatea Tehnică a Moldovei (utm.md)

  • 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
  • 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»

Источник

Оцените статью
Adblock
detector