7

假设我有一个文件 foo.py,并且在文件中我想执行一个文件 bar.py。但是,bar.py 与 foo.py 不在同一个目录中,它在一个名为 baz 的子目录中。会execfile工作吗?怎么样os.system

4

3 回答 3

5

只需添加一个空__init__.py文件来baz表示一个模块,然后foo.py

from baz import bar

当然,除非您有充分的理由不制作baz模块(并使用 execfile)。

于 2012-12-30T20:22:03.503 回答
2

导入 sys,通过在运行时附加路径来更改“sys.path”,然后导入有帮助的模块

于 2012-12-30T21:40:43.330 回答
1

问题意味着您想将这些作为脚本运行,所以是的:您可以在 2.X 或进程中使用 execfile (调用解释器并将脚本作为参数传递)。您只需要提供文件的绝对路径。

# Python 2.X only!
execfile ('c:/python/scripts/foo/baz/baz.py')

当然,从字面上看是很脆弱的。如果 baz 始终是 foo 的子目录,则可以从 foo 的文件中派生它:

baz_dir = os.path.join(os.path.dirname(__file__), "baz")
baz_file = os.path.join(baz_dir, "baz.py")
execfile(baz_file)

如果这两个文件都位于您的 python 可以看到的位置 - 即文件夹位于sys.path或已使用站点添加到搜索路径中,您可以从 foo 导入 baz 并直接调用它的函数。如果您需要实际对来自 baz 的信息采取行动,而不是仅仅触发一个动作,这是一个更好的方法。 只要每个文件夹中有一个init .py你就可以

import baz
baz.do_a_function_defined_in_baz() 
于 2012-12-30T20:22:42.967 回答