我有以下代码,我试图用它来同时声明多个变量:
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
,并表示它没有被定义。
为什么会有这样的想法?
由于
答案 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