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



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

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

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

只需用 +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))

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

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

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

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

有关其他可用的技术,请参阅此处。

试试这个:

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

使用 f 字符串

  • 这是字符串格式设置的最简单和最新的实现。
  • f-strings:一种在Python中格式化字符串
  • 的新方法和改进方法
  • PEP 498 - 文字字符串插值
  • 字符串前面有一个f,变量位于字符串引号内,用 {} 括起来。
    • f"file_{i}.dat"
  • 读取和写入文件
    • 优点是文件在其套件完成后会正确关闭,即使在某个时候引发异常也是如此。
  • 对于 python 3,这种使用rangexrange
  • f.write(f'{func(i)}')f.write(str(func(i)))
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)}')

最新更新