Python-如何从外部文件调用代码

时间:2018-06-20 18:13:56

标签: python io call

我修改了这个问题,使其更加简单。

我正在 python 3.x 中运行程序。 我希望该程序打开文件名 example.py 并在其中运行代码。 这是文件的内容:

#example1.py
print('hello world')

#example2.py
    print('hello world 2')

#main.py
someMagicalCodeHere(executes example2.py)
#prints hello world

我需要在不将其导入的情况下执行此操作。

导入文件的问题在于,它们是在main.py中预先声明的。我的main.py将创建 example1.py,example2.py等,并用代码填充它们,然后根据需要参考它们。可能有成千上万。

这是一个大型项目的一部分,我们正在尝试切换到新语言。我们还不了解python,我们需要这个概念才能继续学习该语言。

我尝试过     exec(example.py)

我尝试过     用open('example.py','r')作为ex:          ex.read()

预先感谢您的回答,并感谢到目前为止所有已回答的人。

3 个答案:

答案 0 :(得分:0)

我假设您具有某种将字符串转换为此类答案的函数,或者可能是字典。否则,解决该问题的方法将超出NLP当前的进展范围。

def ask_question_and_get_response(question=None): answer = input(question) return answer

我还必须假设您有一种方法可以将原始问题(例如“您叫什么名字?” )转换为用户可以依次问您的机器人我的名字是什么?” 。让该函数如下所示:

def get_reflex_question(question):
    <your implementation>
    return reflex_question

有了这两个选项,我们可以创建一个文件(如果尚不存在),并向其中编写可解释为Python代码的文件。

def make_code(answer, reflex_question)
    with open("filename", "a") as file:
        file.write("\n")
        file.write("if userBoxAsks == %s:\n\t" % (reflex_question))
        file.write("print(answer)")

这会将代码输出到您命名的文件中。 要运行该文件,您可以使用subprocess模块(请阅读文档),或者简单地将您的文件作为模块本身导入。 每当您更新文件时,都可以重新加载导入,以便新代码也可以运行。在Python3.x中,您可以执行importlib.reload(filename)刷新导入。

答案 1 :(得分:0)

经过反复的思考,寻找和搜寻,我通过实验发现了自己的问题的答案。

#c:\\one.py
print('hello world')

#c:\\main.py
import os.path


filename = "c:\\one.py"

if not os.path.isfile(filename):
    print ('File does not exist.')
else:

    with open(filename) as f:
        content = f.read().splitlines()

    for line in content:
        exec(line)

返回(不带引号)“ Hello World”

答案 2 :(得分:0)

请注意,这些解决方案并不安全且被认为具有风险。所以显然是出于游戏/测试目的

Python 2:

execfile('example2.py') 

Python 3:

with open('example2.py') as f:
    exec(f.read())