Python中变量声明的困难

时间:2014-03-15 14:00:34

标签: python

我有以下代码,我试图用它来同时声明多个变量:

for x in range(1, 15):
    for y in range(1, 87):

        strvar1 = "%s" % (x)
        strvar2 = "%s" % (y)

        with open("C:\\Python33\\NASDAQ Stock Strings\\NASDAQ_Config_File_" + str(strvar1) + "_" + str(strvar2) + ".txt", "r") as myurls:
            myurls2_x_y = myurls.read().replace('\n', '')

当我添加print(myurls2_x_y)并查看日志时,上面的代码依次打开每个动态文件路径,然后按预期显示和清理上述文本文件中的字符串。

然而,在SAS(这是我的主要语言)之类的东西中使用这种方法,我期望保留每个变量值,因为它们具有不同的名称,即我希望有变量myurls2_1_1,{ {1}},myurls2_1_2等都声明了。

接下来的想法是通过我在某些myurls2_1_3 Python代码中的URL =声明传递它们,以便我可以一次提交多个URL。

除了脚本来解析动态生成的变量之外,所有这些都能正常工作,它会到达第一个变量concurrent.futures,并表示它没有被定义。

为什么会有这样的想法?

由于

1 个答案:

答案 0 :(得分:1)

一种方法是使用以x,y元组为关键字的字典:

myurls = {}
for x in range(1, 15):
    for y in range(1, 87):
        with open("C:\\Python33\\NASDAQ Stock Strings\\NASDAQ_Config_File_{}_{}.txt".format(x,y),"r") as f:
            myurls[x,y] = f.read().replace('\n', '')

这是一个我可以在没有你的文件的情况下运行来展示查找的例子:

myurls = {}

TEMPLATE = r'C:\Python33\NASDAQ Stock Strings\NASDAQ_Config_File_{}_{}.txt'

def content(filename):
    with open(filename) as f:
        return f.read().replace('\n', '')

for x in range(1, 15):
    for y in range(1, 87):
        #myurls[x,y] = content(TEMPLATE.format(x,y))
        myurls[x,y] = TEMPLATE.format(x,y)

print(myurls[1,5])

输出:

C:\Python33\NASDAQ Stock Strings\NASDAQ_Config_File_1_5.txt