20

我想在循环上运行一个函数,并且我想将输出存储在不同的文件中,这样文件名就包含循环变量。这是一个例子

for i in xrange(10):
   f = open("file_i.dat",'w')
   f.write(str(func(i))
   f.close()

我怎样才能在python中做到这一点?

4

5 回答 5

31

只需用+和构造文件名str。如果需要,您还可以使用旧式新式格式来执行此操作,因此文件名可以构造为:

"file_" + str(i) + ".dat"
"file_%s.dat" % i
"file_{}.dat".format(i)

请注意,您当前的版本没有指定编码(您应该),并且在错误情况下不会正确关闭文件(with语句会这样做):

import io
for i in xrange(10):
   with io.open("file_" + str(i) + ".dat", 'w', encoding='utf-8') as f:
       f.write(str(func(i))
于 2012-09-24T07:32:33.910 回答
4

将变量连接i到字符串,如下所示:

f = open("file_"+str(i)+".dat","w")

或者

f = open("file_"+`i`+".dat","w") # (`i`) - These are backticks, not the quotes.

有关其他可用技术,请参见此处

于 2012-09-24T07:33:04.360 回答
4

使用f = open("file_{0}.dat".format(i),'w'). 实际上,您可能想要使用类似 的东西f = open("file_{0:02d}.dat".format(i),'w'),它会将名称补零以将其保持为两位数(因此您会得到“file_01”而不是“file_1”,这对于以后的排序很有用)。请参阅文档

于 2012-09-24T07:33:14.443 回答
3

试试这个:

for i in xrange(10):
   with open('file_{0}.dat'.format(i),'w') as f:
       f.write(str(func(i)))
于 2012-09-24T07:33:27.943 回答
0

使用 f 字符串

def func(i):
    return i**2

for i in range(10):
    with open(f"file_{i}.dat", 'w') as f:
        f.write(f'{func(i)}')
于 2020-06-20T20:26:52.337 回答