You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python程序提示执行成功但无法向txt文件写入内容的问题求助

文件写入失败问题排查及修复

问题根因

  • 语法错误:Bat分支的with open('GamePoints.txt, 'a+') as f: 这行文件名缺少闭合单引号,GamePoints.txt后面漏写',正常运行到这里会直接抛出SyntaxError。如果你本地能跑到打印ok的步骤,先检查本地代码这里是不是贴代码时手滑漏写了引号。
  • 冗余打开操作导致内容被覆盖/写入失败:两个分支里你都在with块外单独写了open("GamePoints.txt","w")/open("GamePoints.txt","w+"):
    • w/w+模式打开文件会直接清空全部原有内容
    • 这两个打开的文件对象你既没有写入内容,也没有调用close()关闭,Windows系统下会直接锁定文件,导致后续with块的写入操作失败;就算在类Unix系统下,这两个未关闭的w模式句柄被垃圾回收时,会把空缓冲区内容刷入文件,直接覆盖你后面写入的字符串,这就是看不到写入内容的核心原因。
  • 非功能性小问题:变量名botting是拼写错误,正确写法为batting;import GameFile3写在函数内部不符合常规编码规范,建议移到文件顶部。

修复方案

直接删掉两个分支里多余的单独open调用,只用with上下文管理器操作文件即可,with会自动处理文件关闭、缓冲区刷新逻辑,不会出现内容丢失问题。如果你的逻辑是每次掷硬币结果确定后覆盖写入对应标识,直接用w模式即可,不需要用a+追加:

import time
import random
# 建议把GameFile3的import移到文件顶部,不要写在函数内部

class lostToss():

    def botChoose(self):
        print("Bot is choosing between batting and bowling.")
        for dot in range(5):
            print((dot + 1) * ".")
            time.sleep(0.25)
        for _ in range(10):
            print("")
        choices = ['Bat', 'Bowl']
        choose_res = random.choice(choices)
        print(f"And the bot has chose to {choose_res}")
        time.sleep(1)
        if choose_res == "Bat":
            with open('GamePoints.txt', 'w') as f:
                f.write('52L05yt0smdwPMA4wgdTUF7Yh4dLT')
            print('ok')
            time.sleep(10)
            import GameFile3
        elif choose_res == "Bowl":
            with open('GamePoints.txt', 'w') as file:
                file.write('69L05yt0smdwPMA4wgdLOL7Yh4dLT')
            time.sleep(2)
            import GameFile3

如果你确实需要保留文件历史内容做追加写入,把w改成a+即可,只要删掉前面冗余的open调用,就不会出现内容被覆盖的问题。

内容的提问来源于stack exchange,提问作者ScamperedC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:12:32