Преобразуйте 1 и 0 из командной строки в True или False в скрипте Python

#python

#питон

Вопрос:

У меня есть следующий код:

 import sys def main(option1, option2, option3):   # do something  if __name__ == '__main__':  option1 = bool(sys.argv[1])  option2 = bool(sys.argv[2])  option3 = bool(sys.argv[3])  

Однако, когда я запускаю скрипт из командной строки, как:

 conda activate myenv python C:mypathmyscript.py 0 0 1   

Он не преобразует целые числа в логические и работает так, как если бы все они были истинными (1s). Кто-нибудь знает, как я могу это исправить?

Комментарии:

1. входные данные-это строки ( bool('0') -gt; gt; True ), вам нужно преобразовать: bool(int(sys.argv[1])) (Примечание. это простой пример, вам, вероятно, сначала нужно проверить входные данные)

Ответ №1:

В python непустая строка является «правдивой», то есть она оценивается как истинная при использовании в качестве условия. argv элементы всегда являются строками, поэтому здесь вы получаете «правдивость» 3 непустых строк, которые всегда будут оцениваться как истинные.

Вы должны преобразовать в int перед преобразованием в bool.

 if __name__ == '__main__':  option1 = bool(int(sys.argv[1]))  option2 = bool(int(sys.argv[2]))  option3 = bool(int(sys.argv[3]))  

Комментарии:

1. Спасибо, это решает проблему.

2. Спасибо @khelwood, я обновил свой ответ, чтобы быть более технически точным.