python: значение sys.argv[0] в официальной документации

Цитата из docs.python.org:

"sys.argv Список аргументов командной строки, передаваемых скрипту Python. argv[0] – это имя скрипта (это зависит от операционной системы, является ли это полным путем или нет). Если команда была выполнена с использованием параметра командной строки -c для интерпретатора, argv[0] устанавливается в строку '-c'. Если интерпретатору Python не было передано имя сценария, argv[0] является пустой строкой».

Я что-то упустил, или sys.argv[0] всегда возвращает имя скрипта, и чтобы получить '-c', мне пришлось бы использовать sys.argv[1]?

Я тестирую Python 3.2 в GNU/Linux.


person kynikos    schedule 07.03.2011    source источник
comment
Эхех, я тупо перепутал -c как просто примерный вариант, вместо реального варианта python, неважно...   -  person kynikos    schedule 07.03.2011


Ответы (3)


Нет, если вы вызываете Python с -c для запуска команд из командной строки, вашим sys.argv[0] будет -c:

C:\Python27>python.exe -c "import sys; print sys.argv[0]"
-c
person Daniel DiPaolo    schedule 07.03.2011

Когда Python вызывается как python script.py, то sys.argv[0] == 'script.py'. Когда вы вызываете python -c 'import sys; print sys.argv', затем sys.argv[0] == '-c' указывает, что тело скрипта было передано в виде строки в командной строке.

person samplebias    schedule 07.03.2011

python -c выполняет команду, переданную в командной строке, а не скрипт из файла. sys.argv[0] будет установлено на "-c".

Если вы запустите скрипт с флагом -c, тогда да, sys.argv[1] будет установлено на "-c", а sys.argv[0] будет установлено на имя скрипта.

person Wooble    schedule 07.03.2011
comment
Я просто подумал о -c в качестве примера, как в script -c, и не думал об этом как о реальном варианте Python... ^^' - person kynikos; 07.03.2011