我使用的是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中。
有人可以指导我如何做到这一点吗?
感谢您的学习。
答案 0 :(得分:1)
我不建议使用execfile
。事实上,你只需要了解Python中的导入是如何工作的,你正在学习Python吗?
你有几种方法可以解决这个问题。
最简单的方法是将所有内容打包在一个模块中,说mytest
。
mytest
mytest/__init__.py
(Why __init__.py)mytest/test.py
,mytest/test2.py
(您也应该更改名称,但这不是重点。)mytest/test.py
中,只需执行import test2
即可执行test2
中的所有代码。更好的方法是将代码封装在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
指向的文件中的语句。