Iterate filename with number



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

这些文件在Python创建之前并不存在于磁盘上。我该如何着手解决这些问题?

要创建一个新字符串,必须将两个字符串连接起来:

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('foon')

如果您需要更复杂的文件名,str.format方法可以派上用场。上面的等价物是:'{0}.txt'.format(i)。我也认为它更可读。

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

使用

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

最新更新