从未指定的目录运行Python文件

2024-09-27 07:25:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行一个名为测试.py. 我在同一个目录中有一个名为Model的文件夹。在这个模型中,我还有其他几个文件夹(比如UserMgmt、GPO、DNS等等),每个文件夹都包含不同的python程序。现在,我想根据用户的选择从UserMgmt或DNS或GPO文件夹运行python程序。我试过。。你知道吗

    foldername = raw_input('Enter foldername:');
    filename = raw_input('Enter filename:');
    from Model.foldername import filename;

但它显示错误“无效语法”。我必须导入python文件,因为我将使用这些文件中的变量和函数。但是python文件和文件路径取决于用户。在这种情况下如何导入python文件? 请帮忙。。。 先谢谢你。你知道吗


Tags: 文件用户py程序目录文件夹inputraw
3条回答

谈到动态导入,^{}是您的朋友。但是,如果您只想根据给定的python脚本的路径来执行它,那么只需使用os.system()execfile()。你知道吗

您可以使用importlib或imp模块

importlib可以很好地导入一些与当前目录相关的模块

import importlib
# foldername need to be in same dir with this script
foldername = raw_input('Enter foldername:')
# enter filename without .py for this case
filename = raw_input('Enter filename:')
test = importlib.import_module(foldername + '.' + filename)
# for example, foldername = 'GPO', filename = 'test'
# this will import GPO\test.py

如果您想从任意路径导入一些文件,可以使用imp模块

import imp
import os
# foldername can be from anywhere
foldername = raw_input('Enter foldername:')
# enter filename with .py for this case
filename = raw_input('Enter filename:')
test = imp.load_source(filename ,os.path.join(foldername, filename))
# for example, foldername = r'C:\NGO', filename = 'test.py'

不能将变量与此语法一起使用。你知道吗

在您的代码中,您实际上是从foldername模块导入一个文件名。你知道吗

尝试使用以下代码:

exec("from Model.{} import {}".format(foldername, filename))

相关问题 更多 >

    热门问题