Python会员兑换码生成脚本open函数无法创建premiumaccess.txt文件求助
问题排查与修复方案
核心问题点
- 路径拼接错误:判断文件不存在后创建文件时,你使用的路径
f"{appdata}premiumaccess.txt"漏写了路径分隔符,拼接后路径完全错误,文件会生成到错误的位置,而非你预期的APPDATA目录下。 - 文件内容判断逻辑错误:你直接使用
if '1' in file判断内容,这里file是文件对象而非文件内容,该判断逻辑永远不成立,会导致写入分支永远不会触发。 - 路径处理不规范:手动拼接Windows路径极易出现分隔符遗漏、拼写错误的问题,你已经导入了
Path类,可以直接用它处理路径,彻底避免手动拼写错误。 - 操作冗余:以
w模式打开文件时会自动清空原有内容,不需要额外调用truncate()方法。
修复后完整代码
import requests import os import random from pathlib import Path # 存储兑换码的txt文件地址 url = 'a website with all of the premium codes in a txt file' # 增加请求异常处理,避免网络问题导致脚本崩溃 try: r = requests.get(url, timeout=10) r.raise_for_status() except requests.exceptions.RequestException as e: print(f"获取兑换码失败:{e}") exit() code = r.text.split() appdata = os.getenv("APPDATA") # 用Path处理路径,自动适配系统分隔符,不会出现拼写错误 data_path = Path(appdata) / "premiumaccess.txt" # 文件不存在时自动创建 if not data_path.exists(): data_path.touch() # 读取文件内容后再判断激活状态 with open(data_path, 'r', encoding='utf-8') as f: content = f.read().strip() if content == '1': print("你已经领取过高权限兑换码...") else: print(f'{random.choice(code)}\n\n这是你的AccTools高级会员兑换码!请勿分享给他人,使用愉快!') # w模式自动清空原有内容,直接写入即可 with open(data_path, 'w', encoding='utf-8') as f: f.write("1")
如果你需要保留原英文提示,替换对应print内容即可。
额外注意事项
- 你当前的实现逻辑存在安全风险:直接将所有兑换码明文存储在公开可访问的txt文件中,任何人抓包都可以获取到全部兑换码,建议改为接口校验兑换码有效性,不要把全量兑换码下发到客户端。
- 打包为exe后若出现权限问题,右键选择「以管理员身份运行」即可解决。
内容的提问来源于stack exchange,提问作者ItsBlackZ
相关产品推荐
相关产品推荐

