python: sys.argv [0] означает в официальной документации - PullRequest
4 голосов
/ 07 марта 2011

Цитирование из 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.

Ответы [ 3 ]

10 голосов
/ 07 марта 2011

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

C:\Python27>python.exe -c "import sys; print sys.argv[0]"
-c
5 голосов
/ 07 марта 2011

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

0 голосов
/ 07 марта 2011

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

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

...