在Python 2.7中循环使用多个数据文件

时间:2016-12-30 15:00:32

标签: python python-2.7 loops import data-files

我在循环中读取多个数据文件时遇到困难。我想用很多不同的实例来解决我的数学模型。我将每个实例存储在一个txt文件中。实例由一些参数(数字,数组和矩阵)定义。例如,实例InstanciaSEC_E0_m1_J3_K2.txt包含以下数据:

E = 0
m = 1
J = 3
K = 2
p = {0: 0.696969696969697, 1: 0.30303030303030304}
UDC = {(0, 1): 9.0, (1, 2): 10.0, (0, 0): 5.0, (1, 1): 6.0, (1, 0): 9.0, (0, 2): 6.0}
UDU = {(0, 1): 5.0, (1, 2): 4.0, (0, 0): 2.0, (1, 1): 4.0, (1, 0): 1.0, (0, 2): 3.0}
UAC = {(0, 1): 1.0, (1, 2): 0.0, (0, 0): 2.0, (1, 1): 3.0, (1, 0): 4.0, (0, 2): 0.0}
UAU = {(0, 1): 9.0, (1, 2): 10.0, (0, 0): 5.0, (1, 1): 6.0, (1, 0): 10.0, (0, 2): 6.0}

要读取单个实例,我只需将其更改为.py文件并导入即可:

import InstanciaSEC_E0_m1_J3_K2 as I

然后通过执行以下操作简单地访问内部信息:

 I.E=E
 I.m=m
 I.UDC=UDC

等等。一旦我获得了实例信息,我就可以构建我的模型并解决它并检索有关解决方案的必要信息。

我希望能够为许多此类实例文件执行相同操作。理想情况下,我应该能够迭代地导入数据文件,提取信息,解决我的模型,然后继续下一个数据文件。我不知道是否可以在主函数的循环中进行导入并逃脱...所以我根据https://stackoverflow.com/a/924719给出的答案尝试了以下但是它不起作用...我定义以下函数从实例文件中检索数据:

def getVarFromFile(filename):
    import imp
    f = open(filename)
    global data
    data = imp.load_source('data', "", f)
    f.close()

然后,在主代码中我执行以下操作:

 Exp = 5
 for K in range(50,101,50):
     for J in range(5,6,1):
         for m in range(2,3,1):
             for E in range(Exp):
                getVarFromFile('/Users/Carlos/Desktop/Stab2/InstanciasSeguridad/InstanciaSEC_E%s_m%s_J%s_K%s.py' %(E,m,J,K))
                print data.E
                print data.m
                print data.J
                print data.K (etc.)
                print "/Users/Carlos/Desktop/Stab2/InstanciasSeguridad/InstanciaSEC_E%s_m%s_J%s_K%s.py" %(E,m,J,K)

最后一次打印确认我确实循环遍历数据文件,但我正在检索的信息不正确。我的眼睛唯一的阴影位是imp.load_source()函数,因为它的作用不是立即对我来说很清楚(即使在阅读文档后)。任何帮助都会很棒。也许我正在以错误的方式解决这个问题,并且有一种更简单的方法可以循环并从数据文件中检索变量。

0 个答案:

没有答案