如何从变量中调用并运行另一个Python文件

时间:2017-05-02 11:47:30

标签: python

我使用的是Python版本:2.6.6。我在目录中有一个Python代码test2.py:/ home / admin。

我正在尝试从内部运行该文件:/home/admin/Practice/test.py。

我的test.py代码包含:

import os
filedir = os.path.realpath(__file__)
scriptdir = os.path.dirname(filedir)
print (filedir)
print (scriptdir)
newfile = scriptdir + "/../" + "test2.py"
new_module = __import__(newfile)
exec("python new_module 100 10"

现在我知道这可能不是从另一个运行Python脚本的正确方法。但是,当我运行这个时,我得到:

[admin@centos1 Practice]$ python test.py
/home/admin/Practice/test.py
/home/admin/Practice
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    new_module = __import__(newfile)
ImportError: Import by filename is not supported.

我们必须运行Python脚本:/home/admin/test2.py,它位于test.py中的变量:newfile中。

有人可以指导我如何做到这一点吗?

感谢您的学习。

2 个答案:

答案 0 :(得分:1)

我不建议使用execfile。事实上,你只需要了解Python中的导入是如何工作的,你正在学习Python吗?

你有几种方法可以解决这个问题。

最简单的方法是将所有内容打包在一个模块中,说mytest

  1. 创建名为mytest
  2. 的目录
  3. 创建文件mytest/__init__.pyWhy __init__.py
  4. 复制文件:mytest/test.pymytest/test2.py(您也应该更改名称,但这不是重点。)
  5. 在您的文件mytest/test.py中,只需执行import test2即可执行test2中的所有代码。
  6. 更好的方法是将代码封装在test2.py中的函数中,如:

    def foo():
        # your code here
    

    所以在test.py你可以这样做:

    import test2
    test2.foo()
    

    假设您test2.py中的代码是:

    print "Hello world!"
    

    我的建议将由以下内容产生:

    档案mytests/__init__.py为空。

    档案mytest/test.py

    import test2
    test2.my_function_name()
    

    档案mytest/test2.py

    def my_function_name():
        print "Hello world!"
    

    您可以使用:python mytest/test.py

    运行它

    最后,如果您将文件test.py用作命令行入口点(More about __main__),则应将文件__main__.py重命名。

答案 1 :(得分:0)

您可以使用内置函数execfile运行另一个Python文件的内容。即execfile(filename)执行当前作用域中filename指向的文件中的语句。