如何将文件加载到Python控制台?

264

我有一些 Python 代码行,需要不断地复制/粘贴到 Python 控制台中。是否可以运行 load 命令或其他命令? 比如: load file.py


21
导入文件。没有.py扩展名。 - Mikel
1
当使用 import file 时,无法访问 file 中的变量。 - Kadir
6
变量实际上是可以被访问的。尝试使用 file.variable - Tim Ludwinski
8个回答

235

从man页面中得知:

-i 当脚本作为第一个参数传递或使用-c选项时,在执行脚本或命令后进入交互模式。 它不会读取$ PYTHONSTARTUP文件。 当脚本引发异常时,检查全局变量或堆栈跟踪时,这可能非常有用。

因此,这应该做你想要的:

python -i file.py

10
如果您还没有进入控制台,这是一个很好的选择。感谢Arafangion的提示。 - SomeShinyObject
1
如果file.py文件已更改,如何重新加载它?Python3.8+ - Asalle
问题明确是在控制台中已经加载文件。 - RichieHH
1
@RichieHH:整整十年来,许多 Stack Overflow 的访问者都发现这是一个有用的答案。然而,原始问题可能存在歧义,并且此后已经进行了编辑... - Arafangion
2
@Asalle:针对你的问题,你应该将其作为一个单独的问题提出来,不过可以参考一下这个链接:https://dev59.com/fF0Z5IYBdhLWcg3wdQTU - Arafangion

208

如果您使用的是Python 2,请尝试使用 execfile。 (有关Python 3的其他答案,请参见其他回答)

execfile('file.py')

使用示例:
让我们使用"copy con"快速创建一个小脚本文件...

C:\junk>copy con execfile_example.py
a = [9, 42, 888]
b = len(a)
^Z
        1 file(s) copied.

然后让我们这样加载这个脚本:

C:\junk>\python27\python
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> execfile('execfile_example.py')
>>> a
[9, 42, 888]
>>> b
3
>>>

1
你能解释一下你使用 copy con 的用途吗?根据我所读的,它只用于复制文件 http://www.computerhope.com/copyhlp.htm - CodyBugstein
12
他从控制台(被视为文件)复制到execfile_example.py。 "^Z"是文件结束符。这只是一种在不打开编辑器的情况下将文本输入文件的方法。 - I. J. Kennedy
如果您还没有进入控制台,请查看@Arafangion的答案。 - Barry McNamara

126

Python 3: 新版 exec (execfile 被弃用)

execfile 方案仅适用于 Python 2。Python 3 中已经弃用了 execfile 函数,并将 exec 语句升级为内置通用函数。正如 Python 3.0 更新日志中的注释和 Hi-Angels 的评论所建议的:

使用

exec(open(<filename.py>).read())

取代

execfile(<filename.py>)

如果文件包含导入语句,例如 import os,那么 exec() 函数会执行这些语句吗?我目前正在尝试,答案似乎是否定的... - Rylan Schaeffer
4
需要注意的是,filename.py 是一个字符串,因此应该加引号。即:exec(open("mypythonfile.py").read())。 - Max Wen
4
好的,那是一步退步。谢谢,Python 3。 - CrazyPyro
你如何提供程序执行所需的任何参数? - Motorhead
这很丑。 - boulder_ruby

35

从命令行界面中执行:

python file.py

从Python命令行界面

import file
或者
from file import *

10
如果你对文件进行了更改,就需要使用reload(file)重新加载它。 - Santa
1
这是 from file import *,而不是 import * from file - kindall
2
文件需要放在特定目录下吗?我已经使用完整路径了,但它还是不能工作。 - CodyBugstein
导入 directory.subdirectory.file - Seth
@Seth 这是一个相对路径,不是吗?绝对路径怎么样? - Daniel C. Sobral

24

你可以直接使用 import 语句:

from file import *

例如,如果你有一个名为 my_script.py 的文件,你可以这样加载它:

from my_script import *

  • 的意思是什么?
- user1529540
1
在这个上下文中,* 的意思是将脚本中的所有名称导入到当前作用域中。因此,如果您直接从 Python 命令提示符中运行此命令,则您在脚本中定义的任何变量、函数等都将可以在 Python 会话中使用。 - amicitas

6

在您要导入文件的文件夹中打开命令提示符。当您键入'python'时,将打开Python终端。现在,您可以使用

import script_name
注意:导入时不要使用 .py 扩展名。
如何在特定位置打开cmd窗口?


5

0
如果你的 path 环境变量包含 Python(例如 C:\Python27\),你可以在 Windows 命令行(cmd)中直接运行你的 py 文件。如何操作请参考此处。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接