Python 3运行时无法写入并读取.txt文件问题求助
问题解决:程序运行时无法实时看到写入的PIN码内容
你的问题根源在于Python文件操作的缓冲机制:默认情况下,写入文件的数据会先暂存到内存缓冲区,只有当缓冲区填满、文件被手动关闭,或者程序运行结束时,才会真正写入磁盘,导致你在程序运行期间看不到文件内容。
解决方案1:强制刷新缓冲区
在写入内容后,调用flush()方法强制将缓冲区的数据写入磁盘:
import secrets import string from time import sleep letters = string.ascii_letters digits = string.digits alphabet = letters + digits pwd_length = 7 # 生成符合约束的PIN码 while True: pwd = ''.join(secrets.choice(alphabet) for _ in range(pwd_length)) if any(char in letters for char in pwd) and sum(char in digits for char in pwd) >= 3: break f = open("Random Entry Code.txt","w+") for i in range(1): f.write(pwd + "%d\r\n" % (i+1)) # 强制刷新缓冲区,立即写入磁盘 f.flush() sleep(10) # 手动关闭文件 f.close()
解决方案2:使用with语句(推荐)
with语句会自动管理文件资源,在代码块结束时自动刷新缓冲区并关闭文件,即使中途出现错误也能保证文件正确处理:
import secrets import string from time import sleep letters = string.ascii_letters digits = string.digits alphabet = letters + digits pwd_length = 7 # 生成符合约束的PIN码 while True: pwd = ''.join(secrets.choice(alphabet) for _ in range(pwd_length)) if any(char in letters for char in pwd) and sum(char in digits for char in pwd) >= 3: break # 使用with语句打开文件,自动处理刷新和关闭 with open("Random Entry Code.txt","w+") as f: for i in range(1): f.write(pwd + "%d\r\n" % (i+1)) # 可选:手动flush确保立即写入 f.flush() sleep(10)
注:顺便优化了PIN码生成的代码,用join替代循环拼接,更简洁高效。
内容的提问来源于stack exchange,提问作者Quaaz
相关产品推荐
相关产品推荐

