sys.argv Python

Содержание
Введение
Пример
Необязательный аргумент
Пример 2
В других языках
Похожие статьи

Введение

Это статья про агрументы, которые передаются в скрипт извне. Например, из терминала.

Про обычные аргументы читайте статью *args, **kwargs

Пример

Чтобы передать аргументы в Python скрипт из командной строки нужно воспользоваться библиотекой sys

import sys

Далее каждый аргумент нужно принимать с помощью sys.argv

a = sys.argv[1]

Пример: скрипт add.py

import sys first = sys.argv[1] second = sys.argv[2] print(f"{first} + {second} = {first + second}")

python3 add.py topbicycle .ru

topbicycle + .ru = topbicycle.ru

Чтобы проделать то же самое с целыми числами - используем функцию int() так как даже если передать числа, они будут получены как строки.

import sys first = int(sys.argv[1]) second = int(sys.argv[2]) print(f"{first} + {second} = {first + second}")

python3 add.py 3 4

3 + 4 = 7

Необязательный аргумент

Если нужно сохранить возможность не передавать никаких аргументов - можно добавить проверку длинны sys.argv

import sys if len(sys.argv) == 2: a = sys.argv[1] else: a = "default" print("a =", a) print(type(a))

python sysargs.py 2

a = 2 <class 'str'>

python sysargs.py

a = default <class 'str'>

Пример 2

Рассмотрим скрипт words.py из курса от Pluralsight

import sys from urllib.request import urlopen def fetch_words(url): # story = urlopen("http://sixty-north.com/c/t.txt") story = urlopen(url) story_words = [] for line in story: line_words = line.decode("utf8").split() for word in line_words: story_words.append(word) story.close() return story_words def print_words(story_words): for word in story_words: print(word) def main(): url = sys.argv[1] words = fetch_words(url) print_words(words) if __name__ == "__main__": main()

Этот скрипт не будет работать если не передать нужный url через терминал

python words3.py "http://sixty-north.com/c/t.txt"

Желательно также предусмотреть вызов функции main() после импорта.

В текущем виде будут проблемы

➭ python

Python 3.9.5 (default, Jun 15 2021, 15:30:04) [GCC 9.3.0] on linux Type "help", "copyright", "credits" or "license" for more information.

>>> from words import *
>>> main()

Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/andrei/python/words.py", line 23, in main url = sys.argv[1] IndexError: list index out of range

>>> main("http://sixty-north.com/c/t.txt")

Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: main() takes 0 positional arguments but 1 was given

Решается проблема добавлением sys.argv[1] в вызов main

def main(url): words = fetch_words(url) print_words(words) if __name__ == "__main__": main(sys.argv[1])

В других языках

В C аналогичную функцию выполняет int argc, char* argv[]

В Bash это встроено по умолчанию .

Article author: Andrei Olegovich

Похожие статьи
Python
Интерактивный режим
dict, list, str …
\: перенос строки
if, elif, else
Циклы
Функции
try except
Пакеты
ООП
Опеределить тип переменной Python
Работа с REST API на Python
Файлы: записать, прочитать…
Работа с базами данных
datetime: Дата и время в Python
json.dumps
Сложности при работе с Python
Фреймворки: Django, Flask
socket: Python Sockets
Виртуальное окружение
subprocess: bash команды из Python
multiprocessing: несколько процессов одновременно
psutil: cистемные ресурсы
PyCharm: IDE
pydantic: валидация данных
paramiko: SSH из Python
logging: запись в лог
Обучение Python

Search this site

Subscribe to Telegram channel @aofeed to follow new articles and updates to old ones

Go to channel

@aofeed

Ask a question in the Telegram group

@aofeedchat

Contacts and cooperation:
I recommend our hosting beget.ru
Write to info@urn.su, info@aredel.com if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: