我使用以下代码在python中生成一些随机字符串:

import string
import random
import os
passphrases = []
pass_file = open("Passphrases2.txt","w")
os.chmod("Passphrases2.txt",0o777)
for _ in range(100):
    st = "".join(random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for i in range(random.randint(8,16)))
    passphrases.append(st)
    print(st)
for p in passphrases:
    pass_file.write("\n"%p)

我希望这些字符串与python代码存储在同一目录下的文本文件中.

当我执行这段代码时,会创建一个名为Passphrases2.txt的文件,但在第一次执行时它是空的.

当我第二次执行相同的代码时,文件会用第一次执行期间生成的字符串更新,然后在第三次运行时,它会用第二次执行期间生成的字符串更新,以此类推.我无法理解为什么会发生这种情况.

推荐答案

您需要.close()个文件或使用with语句.

这包括一些优化:

import string
import random
import os

alphabet = string.ascii_lowercase + string.ascii_uppercase + string.digits
with open("Passphrases2.txt", "w") as pass_file:
    for _ in range(1000):
        st = "".join(random.choice(alphabet) for i in range(random.randint(8, 16)))
        print(st)
        pass_file.write("%s\n" % p)

os.chmod("Passphrases2.txt", 0o777)

Python-3.x相关问答推荐

我用Kivy创建的应用程序在安卓系统上运行时出错.(attributeerror:';class';对象没有属性';_javaclass__cls_storage';)

汉明距离:涉及按位运算的逻辑步骤不清楚

错误:无法为 pyconcorde 构建轮子,这是安装基于 pyproject.toml 的项目所必需的

如何将函数映射到所有命名元组的元素?

拆分列表的元素并将拆分后的元素包含到列表中

转换Pandas 数据框 - 添加行

Pandas 窗口聚合两个排序表

缺失时推断的数据类可选字段

以编程方式映射 uniprot ID 时如何解决 400 客户端错误?

将字符串表示与使用整数值的枚举相关联?

Python:pprint的模块错误,打印没有错误

Visual Studio Code 中的 Python 3.x 类型提示

为什么 virtualenv 会有效地禁用 Python 3 制表符补全?

PIL 在图像上绘制半透明方形覆盖

从 IPython 重新加载 Python 扩展模块

对字节进行按位运算

没有名为urlparse的模块,但我没有使用 urlparse

尾部斜杠的 FastAPI 重定向返回非 ssl 链接

无法解码 Python Web 请求

为什么异步库比这个 I/O 绑定操作的线程慢?