首页 > 解决方案 > 在没有默认为普通文本的情况下,如何在 idle3 中打开保存的 .py 文件?

问题描述

我最近开始使用 idle3 来跟随讲师推荐的一些课程材料。打开一个新的 shell 并运行 python 代码工作得很好,问题是当我保存文件然后尝试重新打开它以继续课程工作时。

当我打开指定的 .py 文件时,它只会以常规文本加载,我无法再执行新代码,换行符在每行之前没有“>>>”,它甚至不会给出任何输出

如何打开保存的文件并继续执行代码?

标签: pythonpython-idle

解决方案


IDLE 的基本用途是两件事,文本编辑器和交互式控制台。

交互式控制台允许您编写任何 python 代码并立即看到它运行,非常快速的计算和/或测试代码,直到您获得所需的结果。

然而,保存选项(文件 -> 保存)具有欺骗性,因为它会保存您所看到的所有内容,包括>>>保存为 .py 的内容不起作用,或者没有一些额外的工作,即删除所有>>>和所有其他不需要的东西,所以更像是屏幕截图。

文本编辑器模式就是这样,但是专门用于 python 的语法高亮和诸如此类的东西,用它来编写模块或其他任何东西,将其保存为 .py 并按 F5 运行代码以对其进行测试,这将打开一个新的交互式控制台,并将所有代码加载到其中,或者将其加载到以前打开的控制台中,在这种情况下它将首先重置它,这意味着文件中没有的任何内容都将被丢弃(但您可以向上滚动可以如果需要,再次复制粘贴)

因此,例如,在您拥有的文件中

def greetings(name):
    print("hello",name)

并且您使用 IDLE 的文本编辑器模式打开它,只需运行 (F5),您现在可以在交互式控制台中访问该功能

>>> greetings("bob")
hello bob
>>> a=23
>>> 

并让我们创建一个具有某些值的新变量

现在让我们说我们回到文件并添加更多内容,现在看起来像

def greetings(name):
    print("hello",name)

def add(a,b):
    return a+b

b=42

并再次运行它,这会重置控制台,这会显示一个类似这样的 msj,其中包含加载文件的路径

====== RESTART: C:\Users\Copperfield\Documents\StackOverflow\example.py =====
>>> 

现在我们有了greetingsandadd函数,但是a之前的变量现在是 loss

>>> a
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    a
NameError: name 'a' is not defined
>>> 

但是你有b

>>> b
42
>>> 

因此,使用文本编辑器模式编写您想要保留的所有内容,并在交互式控制台中使用它来测试这确实是您想要的东西,如果不是,请继续编辑它......


推荐阅读