VIM: ошибка EOF: EOF при чтении строки ввода python

#vim

#vim

Вопрос:

Я пытаюсь добавить входные данные в свой код Python

 isAge = input("Enter your age: ")
  

и это показывает мне следующую ошибку:

 enter your age: Traceback (most recent call last):
File "test2.py", line 3, in <module>
isAge = input("enter your age: ") 
EOFError: EOF when reading a line
  

Я использую «w !python» для запуска кода.
Я попробовал w !python 18″, где 18 — возрастное число, но это не сработало

Ответ №1:

Если вы используете :w !python из Vim, он запустит интерпретатор Python и передаст скрипт интерпретатору, что означает, что стандартный ввод интерпретатора Python будет подключен к этому каналу, через который Vim отправит ему скрипт, а не на консоль.

Таким образом, функции Python, такие как input() , не будут работать для чтения ввода от пользователя, поскольку интерпретатор не имеет стандартного ввода, подключенного к консоли.

Чтобы решить эту проблему, вместо того, чтобы передавать Vim скрипт в интерпретатор Python, попросите его вызвать интерпретатор Python со сценарием в качестве аргумента. Поэтому вместо :w !python используйте:

 :w
:!python %
  

Предполагается, что вы редактируете файл, а не безымянный буфер. Если у вас есть безымянный буфер, сначала сохраните его в *.py .

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

1. Ах, теперь я, наконец, понимаю это. Большое вам спасибо!

2. Я искал способ протестировать небольшие изменения без перезаписи файла. но я думаю, что единственный практический ответ на данный момент — создать рабочую копию.