创建一个新文件,filename包含循环变量python

时间:2012-09-24 07:30:34

标签: python file

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

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

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

5 个答案:

答案 0 :(得分:24)

只需使用+str构建文件名即可。如果需要,您也可以使用old-stylenew-style formatting来执行此操作,因此文件名可以构造为:

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

请注意,您当前的版本未指定编码(you should),并且在错误情况下无法正确关闭文件(with声明does that):

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))

答案 1 :(得分:3)

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

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

OR

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

有关其他可用技巧,请参阅here

答案 2 :(得分:3)

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

答案 3 :(得分:2)

试试这个:

for i in xrange(10):
   with open('file_{0}.dat'.format(i),'w') as f:
       f.write(str(func(i)))

答案 4 :(得分:0)

使用f弦

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