Это потому, что вы, как правило, должны избегать интерактивного ввода данных пользователем, если это не ключевая функция. В вашем примере: чтение из stdin или командной строки позволяет комбинировать разные программы и запускать их в скриптах и так далее.
Представьте, что вы выполняете много кода и сидите перед экраном в ожидании поступления запроса на ввод. Не лучше ли было указать всю необходимую информацию в командной строке и вместо этого пойти и приготовить чашку кофе?
Что вы могли бы сделать:
- Проверьте, если len (argv)> 1
- Если это так, используйте argv [1] в качестве имени файла
- Если нет, спросите пользователя.
Это добавляет приятную особенность вашей программе: вы можете указать имя файла в командной строке или ввести его в интерактивном режиме.
Попробуйте это:
try:
fn = argv[1]
except IndexError:
fn = raw_input("filename > ")