0

我经常发现自己处于这样的情况:

>>> 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。有没有办法让解释器忘记我输入的前一行?这也可以避免我再次重新输入整个内容。一些控制键组合?我找不到它。

4

1 回答 1

1

在 Linux(和 MacOS?)下,Control-C 将为您提供KeyboardInterrupt

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

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

如果您的键盘有一个“Home”键(或它的快捷方式,例如 MacOS 下的功能左箭头),您可以快速跳转到该行的开头并添加一个“#”来注释掉该行:

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

唯一的缺点是它需要更多的击键。这两种方法都会丢失您的制表符/空格,并让您回到行首。

于 2016-02-15T22:39:30.857 回答