问题标签 [execfile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
20246 浏览

python - 停止执行使用 execfile 调用的脚本

是否可以在不使用 if/else 语句的情况下中断使用 execfile 函数调用的 Python 脚本的执行?我试过exit()了,但它不允许main.py完成。

0 投票
1 回答
8005 浏览

python - Python:来自其他文件工作目录的 execfile?

我有一些代码可以加载默认配置文件,然后允许用户提供自己的 Python 文件作为额外的补充配置或覆盖默认值:

但是有一个问题:execfile()在 指定的文件中执行指令,cfg_path就好像它在 的工作目录中foo.py,而不是它自己的工作目录。因此,如果文件确实如此,指令可能import会失败,例如,与.cfg_pathfrom m import xmcfg_path

我如何execfile()从其参数的工作目录中,或以其他方式获得等效的结果?另外,有人告诉我,execfile它在 Python 3 中已弃用,我应该使用exec,所以如果有更好的方法我应该这样做,我会全力以赴。

注意:我不认为仅仅改变工作目录的解决方案是正确的。据我所知,这不会将这些模块放在解释器的模块查找路径中。

0 投票
2 回答
1168 浏览

python - 为什么在使用 execfile() 运行的 python 脚本中导入不会阻止 NameError?

当脚本在 Python 中使用 exec 语句或 execfile() 运行时,我查看了许多关于 NameError 异常的现有问题,但尚未找到对以下行为的良好解释。

我想制作一个简单的游戏,在运行时使用 execfile() 创建脚本对象。下面是演示问题的 4 个模块(请多多包涵,这很简单!)。主程序只是使用 execfile() 加载脚本,然后调用脚本管理器来运行脚本对象:

脚本文件只是创建一个播放声音的对象,然后将该对象添加到脚本管理器中的列表中:

脚本管理器只是调用每个脚本的 action() 函数:

gamelib 函数定义在第四个模块中,访问起来比较麻烦:

上面的代码适用于以下输出:

但是,如果我注释掉 game.py 中的“import gamelib”语句并取消注释 script.py 中的“import gamelib”,我会收到以下错误:

我的问题是:1)为什么在执行脚本的“game.py”模块中需要导入?2)为什么从引用它的模块(script.py)或调用它的模块(script_mgr.py)导入'gamelib'不起作用?

这发生在 Python 2.5.1

0 投票
4 回答
4040 浏览

python - 在 Python 中退出到命令行

我有一个脚本,我想在某些情况下提前退出:

我使用 Python 交互式提示符运行此脚本execfile("foo.py"),我希望脚本退出并返回到交互式解释器。我该怎么做呢?如果我使用sys.exit(),Python 解释器将完全退出。

0 投票
1 回答
2831 浏览

python - 如何立即停止正在运行单元测试的 python 子进程?终止并杀死不工作

我有一个运行两个线程的 Tkinter GUI,GUI 的主线程和一个工作线程。工作线程使用以下代码创建子进程:

文件 runTests.py 进行一些设置,然后使用以下命令运行单元测试文件:

文件 myUnitTests.py 有几个单元测试,其中一些需要超过五分钟才能运行。从 GUI 我单击一个按钮以停止运行测试。这反过来又使工作线程发送信号以停止子进程:

终止命令不会立即停止进程,它会等到当前单元测试完成运行然后终止进程?我尝试过使用os.kill,但得到的结果与terminate().

关于如何使我的程序更具响应性以便它立即杀死子进程的任何想法?

0 投票
2 回答
2278 浏览

python - Python shell 和 execfile 范围

我在 ipython shell 内部工作,并且经常需要重新加载包含我正在构建的函数的脚本文件。

在我的 main.py 中,我有:

def myreload(): execfile("main.py") execfile("otherfile.py")

如果我已经在同一个 ipython 会话中直接运行了 execfile 命令,则调用 myreload() 可以正常工作。

但是,由于某种原因,如果会话是新的并且我只是调用了 execfile("main.py"),那么 myreload() 实际上不会使 otherfile.py 中的函数可用。虽然它不会抛出任何错误。

有任何想法吗?

0 投票
2 回答
1506 浏览

python - 替代从其他脚本调用时工作的 python atexit 模块

使用atexit.register(function)注册一个函数以在你的 python 脚本退出时调用是一种常见的做法。

问题是我发现了一个以丑陋方式失败的情况:如果您的脚本使用execfile().

在这种情况下,您会发现 Python 在退出时将无法定位您的函数,这是有道理的。

我的问题是如何以不存在此问题的方式保留此功能。

0 投票
1 回答
451 浏览

python - Python 2.4:普通脚本中的导入速度与 execfile 脚本中的导入速度

我刚刚偶然发现了一些对我来说毫无意义的东西。在我工作的地方,我们有许多 Python CGI 网页(只是一个简单的 Apache 服务器设置,不运行 Django / Turbogears 等),我对脚本运行需要多长时间感到有点沮丧。我放弃了很多 time.time() 调用,并认为我已将瓶颈确定为 sqlalchemy 的导入(尽管我现在认为它可能是“任何大模块”,因此 sqlalchemy 标记可能放错了位置)。

所以,在尝试了各种不同的事情之后,我最终得到了这个例子,(假设文件名为'test.py')

如果我在命令提示符下运行 test.py(通过将其设置为可执行),它通常会显示该导入语句的大约 0.7 秒(+/- 0.1 秒)。

但是,如果我打电话

我的速度提高了大约 10 倍

所以我想我会用一个调用的小 tcsh 脚本来包装我的一些 python CGI 脚本

我通常会获得大约 2-3 倍的加速,而且,重要的是,返回的数据仍然是正确的。

使用 cpu-heavy 而不是 import-heavy 脚本,例如:

使用 execfile 时,我得到了一个非常轻微的减速,这是我从轻微的 execfile 开销中所期望的。

有谁知道这里发生了什么?谁能重现类似的速度差异,或者我的设置是否以某种方式被 execfile 修复?我认为导入在 execfile 中的行为略有不同(或者至少,一旦你离开 execfile 语句就不一定可见),但我对速度的如此大差异感到惊讶。

我在 Oracle 提供的“Enterprise Linux Server release 5 (Carthage)”上运行 python 2.4 64bit。

0 投票
2 回答
2272 浏览

python - [Python]编码和执行文件

我正在尝试使用 python 2.4 做类似的事情:

我收到这个错误:

所以我的问题是,如果我要执行的文件的名称带有韩语字符,我该如何执行 execfile?

非常感谢

0 投票
4 回答
96486 浏览

python - Python 3 中 execfile 的替代方案?

Python 2 有内置函数execfile,在 Python 3.0 中被删除。这个问题讨论了 Python 3.0 的替代方案,但自 Python 3.0 以来已经进行了一些相当大的更改

execfilePython 3.2 和未来的 Python 3.x 版本的最佳替代方案是什么?