有没有办法在文本文件中逐行写入这种类型的排列?

2024-04-28 08:32:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个密码:

import itertools
import string
variations = itertools.permutations(string.printable, 1)
for v in variations:
    text_file = open("Output.txt", "w")
    text_file.write(''.join(v))
    text_file.close()

但它不起作用。当我运行.py文件时,会创建Output.txt,但当我打开它时,会看到一个向上箭头。我想看到这样的输出:

1
2
3
4
...

Tags: textinimporttxt密码foroutputstring
2条回答

另一种方式:

import itertools
import string
variations = itertools.permutations(string.printable, 1)

text_file = open("Output.txt", "w")
for v in variations:
    text_file.write(f"{v[0]}\n")

text_file.close()

如上所述,有更好的方法。每次迭代都要打开文件,只打开一次。v是一个元组('1',)等,因此需要索引第一个元素

您在每次迭代中都是以w模式打开和关闭文件,这意味着每次迭代文件都会被截断,这又意味着它将始终只包含您最后写入它的内容

您可以使用a模式,a出现在文件中

更好的方法是在循环之前打开一次文件,在循环之后关闭一次

最佳实践是使用with上下文管理器(google这个词来查找更多信息),它将为您处理文件的打开和关闭

import itertools
import string

variations = itertools.permutations(string.printable, 1)

with open("Output.txt", "w") as f:
    for v in variations:
        f.write('{}\n'.format(''.join(v)))

请注意,我在每行的末尾添加了\n,因为我假设您希望每一个排列都在一行中

相关问题 更多 >