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

4
我想知道如何在for循环中更改文件名,并按不同的连续名称保存它。例如:
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)])  

我该如何更改文件名以便为file1,file2等?


为什么你在使用 vars? - Padraic Cunningham
5个回答

3
您可以按照以下步骤进行操作:
"/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
是的,最好也使用enumerate。 - Padraic Cunningham

0

在列表推导式中,您可以使用format%s

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

0
你可以像这样将每个i添加到文件名中:i
function_to_write("/Users/George/Desktop/file"+str(i)+".bmp", vars()['cluster' + str(i)])

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

应该可以解决问题。


0

使用f字符串的版本。

for i in range(0, np.max(idx) + 1):
    filename = f'/Users/George/Desktop/file{i + 1}.bmp'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接