В моем коде следующее сообщение об ошибке срабатывает, и я не понимаю, как этот случай может придумать:Как это может быть len (sys.argv) <= 0?
if(len(sys.argv) > 0):
doSomething()
else:
raise AttributeError("Could not parse script name")
Вышеприведенный код находится в классе питона, который я импортировать и использовать в каком-то сценарии. Я использую тот же класс с одним и тем же вызовом в других сценариях, и он отлично работает везде. FYI, моя ОС ubuntu.
Как возможно, что len (sys.argv) равен < = 0?
Число аргументов не может быть меньше нуля, но оно может быть равно нулю. Например, если ваша программа запускается через одну из функций [POSIX 'exec'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html), где можно вообще не передавать какие-либо аргументы включая отказ от аргумента «имя программы». –
@Joachim Насколько я понимаю [документация] (https://docs.python.org/2/library/sys.html), 'argv' должен содержать по крайней мере пустую строку, например, если она была вызываемый в интерактивном интерпретаторе. – deceze
Можете ли вы рассказать нам, как был запущен/выполнен скрипт Python, когда 'sys.argv' пуст? Может быть, показать стек вызовов, созданный тем исключением, которое вы делаете? –