如何迭代地从文件夹中引入不同的图层并为它们分配每个不同的变量名称?

时间:2017-10-30 13:06:17

标签: python python-2.7 python-3.x

我一直在使用一些代码将单独填充重要数据的图层导出到文件夹中。我要做的下一件事是将这些层中的每一层都放入不同的程序中,以便我可以将它们组合起来并进行一些不同的测试。我知道如何做的当前方式是逐个导入它们(如下所示)。

fn0 = 'layer0'
f0 = np.genfromtxt(fn0 + '.csv', delimiter=",")
fn1 = 'layer1'
f1 = np.genfromtxt(fn1 + '.csv', delimiter=",")

继续这种方式的问题是我可能一次最多处理100个图层,并且必须单独导入每个图层是非常不方便的。

有没有办法可以改变我的代码来迭代地执行此操作,以便我可以拥有类似的代码:

N = 100
for i in range(N)
fn(i) = 'layer(i)'
f(i) = np.genfromtxt(fn(i) + '.csv', delimiter=",")

如果您知道任何方法,请告诉我!

2 个答案:

答案 0 :(得分:0)

您可以使用以下字符串格式

N = 100
f = [] #create an empty list
for i in range(N)
    fn_i = 'layer(%d)'%i #parentheses!
    f.append(np.genfromtxt(fn_i + '.csv', delimiter=",")) #add to f

parentheses!我的意思是他们很重要'字符。它们表示函数调用和元组,所以你不应该在变量中使用它们(永远!)

答案 1 :(得分:0)

穆罕默德阿塔尔的回答是正确的。但是,您不应再使用%打印。根据PEP 3101(https://www.python.org/dev/peps/pep-3101/),它应该被format()取代。此外,由于您有超过100个文件,因此可能会感谢layer_007.csv这样的格式。 尝试类似:

dataDict=dict()
for counter in range(214):
    fileName = 'layer_{number:03d}.csv'.format(number=counter)
    dataDict[fileName] = np.genfromtxt( fileName, delimiter="," )

使用字典时,您可以稍后使用文件名直接访问数据;但它没有被排除,因此您可能更喜欢Mohammad Athar的列表版本。