我有一个存储一些python源文件的目录(a_dir/*.py
)。
每个* .py文件都有a_var
个对象。
我希望在a_dir
的同一目录下有一个脚本来构建包含所有a_var_list
值的列表a_var
。
我的问题是循环遍历a_dir
中的python源文件,临时加载每个模块并读取对象a_var
以构建a_var值的python列表。
答案 0 :(得分:1)
也许是这样的?
进口
import os
import sys
sys.path.append("a_dir")
a_list = []
for directory in os.walk("a_dir"): #should only iterate once
for file in directory[2]:
if file.split(".")[-1] == "py":
module = __import__(".".join(file.split(".")[:-1]))
if "a_var" in dir(module):
a_list.append(module.a_var)
答案 1 :(得分:0)
如果您不想进行文本解析,可以尝试导入所有文件并访问a_var变量。为了实现这一点,您应该使用“着名的”
编写yor文件if __name__ == '__main__':
<code>
如果您没有使用该方法,最快的方法仍然是文件解析。我会使用类似下面的内容:
import glob
import re
results = []
avar_regex = re.compile(r'\s*a_var\s*=\s*(.*)\s*')
# to define the regex it would be important to know a little bit
#+more about the variable you are looking for.
# glob can be used to create a list with all the file names
for f in glob.glob('a_dir/*.py'):
with open(f) as fc:
while l in fc:
match = avar_regex.match(l)
if match:
results.append(match.group(1))
break