python - 从目录中的每个 .py 文件导入和测试变量
问题描述
我试图从目录中的每个 python 文件中导入和测试变量“builtin”。它应该遍历每个文件并测试变量,如果变量设置为 true,那么它将文件名添加到列表中。如果文件没有“内置”变量,它也应该能够工作。目前,我的代码正在将每个文件添加到列表中,包括带有和不带有变量的文件。我怎样才能解决这个问题?这是我的代码:
def getDefaults(folder):
if folder == "plugins":
files = os.listdir("plugins")
defaults = []
for file in files:
try:
exec("from plugins." + file[:-3] + " import builtin")
if file[:-3].builtin == "True":
defaults.append(file)
except:
pass
return defaults
解决方案
保留一个全局变量并将该变量分配给 exec 语句中的内置变量。
import os
cur_builtin = None
def getDefaults(folder):
if folder == "plugins":
files = os.listdir("plugins")
defaults = []
for file in files:
try:
exec("global cur_builtin; from plugins." + file[:-3] + " import builtin; cur_builtin = builtin")
if cur_builtin == "True":
defaults.append(file)
except:
pass
return defaults
print (getDefaults("plugins"))
测试-
# code in filter_builtin.py
mkdir plugins
cd plugins
echo builtin = '"True"' >> sample1.py
echo builtin = '"True"' >> sample2.py
echo builtin = '"True"' >> sample3.py
echo builtin = '"False"' >> sample4.py
cd ..
python filter_builtin.py
推荐阅读
- json - Flask 和 Python 创建 JSON 对象
- python - 从下载的位置历史数据中使用熊猫创建数据框?
- sql - 是否可以使用 UNION 和 EXCEPT 命令将数据存储在数据库中?
- rmysql - 我正在尝试使用 RMySQL 在 imdb 上执行搜索,但似乎没有正确获取表格
- node.js - Node js 客户端未连接到在 127.0.0.1:8080 上运行的服务器
- python - 使用 json 创建模型对象,其中所有键都不是模型的字段
- python - 使用 sqlalchemy 引擎访问 mysql 数据库时出错
- network-programming - 请求和命令有什么区别?
- javascript - 使用 JavaScript 将 4 位字节数组转换为 int
- validation - 在许多子集的模型验证中使用 Rcpp 而不是 mapply