首页 > 解决方案 > 如何在其他执行中创建不同的 txt.name

问题描述

i = 1
while i <=10:

    f = open("txtfile.txt",+str(i) "a+")

    f.write("111\n")
    f.write("222\n")
    i = i + 1
    f.close()

我想多次创建txt,但最上面的代码不在我的脑海里。

我想创建一个txt.file1,如果存在,下次执行的名字是txt.file2。

标签: python

解决方案


这是在 Python 3.6+ 中创建 10 个文件的简单方法,命名为 from file.txt01to file.txt10

from pathlib import Path

for i in range(1, 11):
    f = Path(f'file.txt{i:02d}')
    f.write_text('111\n222\n')

如果您想在每次运行时创建一个新文件,并按顺序无限编号,请执行以下操作:

from pathlib import Path

i = 1

while True:
    if Path(f'file.txt{i}').exists():
        i += 1
    else:
        Path(f'file.txt{i}').write_text('111\n222\n')
        break

但那是非常低效的。

所以也许这是一个更好的解决方案:

from pathlib import Path

source = Path('/home/accdias/temp')
prefix = 'file.txt'
slots = set([int(_.name.replace(prefix, '')) for _ in source.glob(f'{prefix}*')])
slot = min(set(range(1, max(slots, default=1) + 1)) - slots, default=max(slots, default=1) + 1)
filename = source / f'{prefix}{slot}'
filename.write_text('111\n222\n')

上面的解决方案很好,因为它考虑了可能存在的任何间隙并选择下一个可用的最低插槽号。


推荐阅读