2016-02-15 3 views
0

Я часто нахожусь в такой ситуации, как это:Отмена «...» продолжение блока в интерпретаторе

>>> for line in infile.readlines(): 
... line = line.rtrim() 
... line█  # ^^^^^ Oops, mistake! 

На данный момент я хочу, чтобы начать снова (потому что я перепутал „обрезки“ от Java с «полосой» из Python). Но я не могу позволить, чтобы цикл работал даже с одной итерацией, потому что это было бы беспорядок с файлом.

В этой ситуации мой типичный выход, чтобы ввести некоторые нелегальный синтаксис, такие как восклицательный знак:

>>> for line in infile.readlines(): 
... line = line.rtrim() 
... line! 
    File "<stdin>", line 2 
    line! 
     ^
SyntaxError: invalid syntax 
>>> █ 

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

+0

просто написал его в файле, а затем запустил с помощью интерпретатора python. –

+0

Использовать ['ipython'] (http://ipython.org/) –

+0

Это не Pythonic, чтобы попробовать и сделать все в интерпретаторе. Напишите свой сценарий с помощью текстового редактора или IDE, а затем запустите его из командной строки. – IanAuld

ответ

1

Под Linux (? И MacOS), Control-C даст вам KeyboardInterrupt:

>>> if True: 
...  asdf 
KeyboardInterrupt 
>>> 

Однако под Windows, что выбросит вас обратно в командную строку. Control-D под Linux вернет вас в командную строку, но только если вы находитесь в пустой строке.

Если на клавиатуре есть клавиша «Главная» (или ярлык для нее, такой как стрелка влево-вправо), вы можете быстро перейти к началу строки и добавить «#», чтобы прокомментировать строку :

>>> if True: 
... # asdf 
...  print(False) 
... 
False 
>>> 

Единственный недостаток этого в том, что это еще несколько нажатий клавиш. Оба эти метода потеряют ваши вкладки/пробелы и вернут вас в начале строки.