argv против raw_input - PullRequest
       6

argv против raw_input

1 голос
/ 23 ноября 2011

Я знаю, что при использовании argv мне нужно ввести файл в качестве аргумента (например: python ex15.py ex15_sample.txt), а при использовании raw_input я ввожу имя файла в качестве ввода.

Но я не могу понять, почему один способ получить имя файла лучше, чем другой. Может кто-нибудь объяснить, почему?

Ответы [ 2 ]

6 голосов
/ 23 ноября 2011

Это потому, что вы, как правило, должны избегать интерактивного ввода данных пользователем, если это не ключевая функция. В вашем примере: чтение из stdin или командной строки позволяет комбинировать разные программы и запускать их в скриптах и ​​так далее.

Представьте, что вы выполняете много кода и сидите перед экраном в ожидании поступления запроса на ввод. Не лучше ли было указать всю необходимую информацию в командной строке и вместо этого пойти и приготовить чашку кофе?

Что вы могли бы сделать:

  • Проверьте, если len (argv)> 1
  • Если это так, используйте argv [1] в качестве имени файла
  • Если нет, спросите пользователя.

Это добавляет приятную особенность вашей программе: вы можете указать имя файла в командной строке или ввести его в интерактивном режиме.

Попробуйте это:

try:
    fn = argv[1]

except IndexError:
    fn = raw_input("filename > ")
2 голосов
/ 02 марта 2012

Как часть ввода аргумента командной строки, пользователь может отправлять системные вызовы, что может привести к сбою вашей программы.Например, пользователь может выполнить команду ls.Система выполняет эту команду независимо от того, что ваша программа должна делать.

...