2016-03-07 59 views
1

我正在制作一个故障排除程序,我需要将一个Python程序存储在文本文件中,但我无法使用“导入”模块。为了说明这一点,将会有一个python程序存储为'.txt'文件,并且在主程序中我会将此文本文件作为子程序使用。我试过这样做,但是我不知道如何去做,尤其是因为我没有太多的Python经验。 下面大致是这个程序。我不知道如何将其两种格式,但这里有云:如何使用存储在文本文件中的python程序?

phonechoice = input("What type of phone do you have?") 

if 'iphone' in phonechoice: 
    #here I would load a text file which contains the program for the iphone 
    #which asks them what problem they have with their phone and gives a solution 

我不知道我怎么能做到这一点。我想我该如何做到这一点,也许我可以将程序一行一行地复制并粘贴到一个定义中,然后我可以使用它。这会起作用吗?如果不行,我还能以其他方式做到这一点?

+0

您可以使用.py文件并导入它吗?如果你确实应该可以使用它。 – MarkyPython

+2

听起来像你想''eval'' myfile.read()',这是一件很糟糕的事情。我闻到一个XY问题。到底为什么你想这样做?这如何融入您的整体工作流程? – inspectorG4dget

+0

是的,这是我不明白的地方,因为虽然这就是我的想法,但我的老师说我只能使用一个文本文件,我认为这是一个更复杂和更难的方法。 –

回答

3

将文本文件重命名为python文件,即将扩展名更改为“.py”。这并不改变它是文本文件的事实,就像重命名picture.jpg文件到picture.txt不会改变它是图像文件这一事实。

如果您有一些古怪的要求导入保存在带有.txt扩展名的文件中的模块,则不能使用导入语句。但它仍然可以像这样导入:

import imp 
my_module = imp.load_source('my_module', 'example.txt') 
+0

我不知道我是否在这里错过了一些东西,但实际的程序无限期重复 - 有没有办法只能做一次? @wim –

+0

抱歉@wim忽略了这一点 - 我之前正在做实验,但我并没有意识到我实际上正在将代码复制并粘贴到相同的文本文件中。我有超过20个同样的程序,这就是为什么我认为它无限重复。 –

-1

我有点不愿回答“家庭作业”类型的问题,但我会给你一些关于你需要做什么的指示。如果我在它与这个文本文件:

def main(): 
    print("Hello") 

main() 

我可以与exec功能这样执行代码:

with open("filename.txt") as file: #filename should be the name of the file 
    data = file.read() 

exec(data) #this executes the code 

如预期的输出会:

Hello 

希望这可以解决您的问题!

相关问题