python-3.x - 如何导入具有我在函数中作为字符串生成的名称的特定文件,并将其内容用作脚本的全局变量
问题描述
我想知道如何根据生成的变量名来确定某些文件。一个重要的注意事项是,这些文件中定义的所有变量也应该可以在我当前脚本的环境中访问。
我创建了一个函数,它应该生成在特定情况下需要导入的文件的名称。这是该函数的简化版本:
# the user provides these inputs:
building_name = "cambridge"
room_name = "office1"
def determine_file_names(room=room_name, building=building_name):
filename_building = "building_{}".format(building)
filename_room = "room_{}_{}".format(building, room)
return(filename_building, filename_room)
building_file, room_file = determine_file_names()
# I'd like to import the files 'building_cambridge.py' and 'room_cambridge_office1.py' by doing the following:
from Filefolder import building_file
from Filefolder import room_file
问题是没有导入所需的文件。我收到一个错误,提示找不到“building_file.py”的文件位置:
Exception has occurred: ImportError
cannot import name 'building_file' from 'FileFolder' (unknown location)
它没有找到“building_file.py”是有道理的,因为我实际上希望 python 导入“building_cambridge.py”。
我有大约 300 个文件,其中只需要导入 2 个特定的文件,所以我迫切需要这样的功能才能工作。
我非常喜欢该import
语句,因为它允许我直接在当前脚本中使用这些文件中的所有内容(例如变量),而不是我必须在这些文件中创建 100 个不同的类。
所以我的问题又是:如何确保根据这些生成的变量名导入正确的文件?
解决方案
推荐阅读
- c# - 从 Azure WebJob 运行 Python 脚本
- swift - 下一个窗口打开时如何关闭第一个窗口?
- python-3.x - 我想在 tkinter 中运行 ansible 脚本 onclick of button
- rsync - 如何rsync一个没有扩展名的文件?
- c# - 实现“IndexOf”忽略大小写的 C# 动态 lambda 问题
- c - 编写字符串连接:如何将字符数组转换为指针
- c++ - 如何切换到动态数组?
- android - 为每个 Android API 提供单独的 Android 清单
- php - 如何获取不同格式的图像
- pyspark - 如何在数据框中添加最大日期?