在Python中的每次迭代中更改名称以便保存

时间:2014-11-08 19:21:39

标签: python variables iteration

我想知道如何在for循环中更改文件的名称,以便使用不同的连续名称保存它。 e.g

for i in range(0, np.max(idx)+1):    
    vars()['cluster' + str(i)]= [tracks[x] for x in range(len(tracks)) if idx[x] == i]
    function_to_write("/Users/George/Desktop/file.bmp", vars()['cluster' + str(i)])  

如何更改FileName才能成为file1,file2等?

4 个答案:

答案 0 :(得分:2)

你可以这样做:

"/Users/George/Desktop/file{0}.bmp".format(i+1)

这使用python的string.format(...)方法,用指定的值替换{}

{0}表示替换它的值将是format(...)

中的第0个参数(第1个位置)

此外,我发现您使用的是vars(),这意味着您可能将变量存储为cluster1cluster2cluster3,...

这通常不是一个好主意,相反,建议您使用list

如果您将所有“群集”存储在一个名为clusters的列表中,则可以执行以下操作:

for i in range(0, np.max(idx)+1):
    clusters[i] = [tracks[x] for x in range(len(tracks)) if idx[x] == i]
    function_to_write("/Users/George/Desktop/file{0}.bmp".format(i+1), clusters[i])

答案 1 :(得分:0)

for i in range(0, np.max(idx) + 1):
    filename = "file%d.bmp" % i + 1

应该这样做。

答案 2 :(得分:0)

您可以在列表理解中使用format%s

[function_to_write("/Users/George/Desktop/file{}.bmp".format(i), vars()['cluster' + str(i)]) for i in range(1,n)]

答案 3 :(得分:0)

您可以将每个i添加到文件名中,如下所示:

function_to_write("/Users/George/Desktop/file"+str(i)+".bmp", vars()['cluster' + str(i)])