在Python解释器

时间:2016-02-15 05:43:40

标签: python command-line-interface python-interactive

我经常发现自己处于这样的境地:

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

此时我想重新开始(因为我将Java中的“trim”与Python中的“strip”混为一谈)。但我不能让循环运行甚至一次迭代,因为它会弄乱文件。

在这种情况下,我的典型方法是键入一些非法语法,例如感叹号:

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

但这是一种笨拙的做事方式,而不是pythonic。是不是有办法让翻译忘记我输入的前一行延续?这也可以让我免于重新整理整件事。一些控制键组合?我找不到了。

1 个答案:

答案 0 :(得分:1)

在Linux(和MacOS?)下,Control-C会给你一个KeyboardInterrupt

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

但是,在Windows下,这将使您返回命令提示符。 Linux下的Control-D会让你回到命令提示符,但前提是你在空白行。

如果您的键盘上有一个&#39; Home&#39;键(或其快捷键,如MacOS下的功能左箭头),您可以快速跳转到该行的开头并添加一个&#39;#&#39;注释掉这一行:

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

唯一的缺点就是它还有一些按键。这两种方法都会丢失标签/空格,并将您放回到行的开头。