用数字迭代文件名

时间:2014-08-11 07:34:16

标签: python file-io iterator

我想在磁盘上创建大约100个文件,每个文件的名称为1.txt2.txt,依此类推。我尝试了open(str(i).txt,w+)open(i+'.txt', 'w+')的不同组合,但似乎都没有。

在Python创建之前,这些文件在磁盘上也不存在。如何解决这些问题?

2 个答案:

答案 0 :(得分:3)

要创建新字符串,您必须连接两个字符串:

for i in range(1, 101):
    with open(str(i) + '.txt', 'w') as fobj:
        # do what you want here with the file object
        fobj.write('foo\n')

如果您需要更复杂的文件名,str.format方法可以派上用场。上述内容相当于:'{0}.txt'.format(i)。我也认为它更具可读性。

至于你的尝试,第一个尝试是不可能的,因为.txt部分会导致Python查找名为txt的字符串方法,不存在。另外open()的第二个参数应该是一个字符串,所以这也是一个错误。在第二次尝试中,几乎是正确的,您只是忘了将i转换为字符串。如上所述,您无法将数字字符串连接

答案 1 :(得分:2)

使用

open(str(i) + ".txt", "w+")

为每个i创建具有正确数字的文件。当然,您也可以使用格式字符串

open("%d.txt" % i, "w+") # Old-style format strings, discouraged

open("{0!s}.txt".format(i), "w+") # New-style format strings from Python 2.6 onwards