冻结的Python文件无法访问“保存文件”

2024-09-23 00:13:49 发布

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

打包程序后,我决定测试一下,以确保它能正常工作,但出现了一些问题,主要问题是Save\ u文件。你知道吗

我使用一个保存_文件.py对于数据,静态保存数据。但是,冻结的python文件不能处理这个文件。它不能写,也不能读。写着说保存成功,但加载时,它会再次将所有值重置为零。你知道吗

任何.py文件这样做都正常吗?你知道吗

这是pyinstaller中的问题吗?你知道吗

冷冻过程不好?你知道吗

或者是否有其他原因导致冻结文件无法写入、读取或与不在其中的文件交互?(Save\u文件在内部被冻结,无法工作,但删除它会导致错误,类似于它不存在时)。你知道吗

所以exe无法看到外部或内部的变化。。。你知道吗

编辑:添加了保存文件的最基本版本,但基本上,它会被大量删除和重写。你知道吗

def save():
with open("Save_file.py", "a") as file:
    file.write("healthy = " + str(healthy) + "\n")
    file.write("infected = " + str(infected) + "\n")
    file.write("zombies = " + str(zombies) + "\n")
    file.write("dead = " + str(dead) + "\n")
    file.write("cure = " + str(cure) + "\n")
    file.write("week = " + str(week) + "\n")
    file.write("infectivity = " + str(infectivity) + "\n")
    file.write("infectivity_limit = " + str(infectivity_limit) + "\n")
    file.write("severity = " + str(severity) + "\n")
    file.write("severity_limit = " + str(severity_limit) + "\n")
    file.write("lethality = " + str(lethality) + "\n")
    file.write("lethality_limit = " + str(lethality_limit) + "\n")
    file.write("weekly_infections = " + str(weekly_infections) + "\n")
    file.write("dna_points = " + str(dna_points) + "\n")
    file.write("burst = " + str(burst) + "\n")
    file.write("burst_price = " + str(burst_price) + "\n")
    file.write("necrosis = " + str(necrosis) + "\n")
    file.write("necrosis_price = " + str(necrosis_price) + "\n")
    file.write("water = " + str(water) + "\n")
    file.write("water_price = " + str(water_price) + "\n")
    file.write("air = " + str(air) + "\n")
    file.write("blood = " + str(blood) + "\n")
    file.write("saliva = " + str(saliva) + "\n")
    file.write("zombify = " + str(zombify) + "\n")
    file.write("rise = " + str(rise) + "\n")
    file.write("limit = int(" + str(healthy) + " + " + str(infected) + " + " + str(dead) + " + " + str(zombies) + ")\n")
    file.write("old = int(1)\n")
Clear.clear()
WordCore.word_corex("SAVING |", "Save completed successfully")
time.sleep(2)
Clear.clear()
player_menu()

Tags: 文件pysavepricefilewritehealthylimit
1条回答
网友
1楼 · 发布于 2024-09-23 00:13:49

这可能是因为文件的冻结版本(在.zip文件中的某个地方)已加载,而您正在编写的文件(在文件未冻结时工作)从未加载过

这是不好的做法:

- have a zillion global variables to hold your persistent data
- generate code in a python file just to evaluate it back again (it's _self-modifying code_).

如果你使用C或C++语言,你会生成一些代码来存储你的数据,然后把它编译到你的新的可执行文件中吗?你能申报300张全球票吗?我不这么认为。你知道吗

最好使用json数据格式和变量字典,这将适用于冻结或不冻结:

你的字典是这样的:

variables = {"healthy" : True, "zombies" : 345}  # and so on

访问变量:

if variables["healthy"]:  # do something

然后保存函数:

import json
def save():
    with open("data.txt", "w") as file:
        json.dump(variables,file,indent=3)

创建包含以下数据的文本文件:

{
   "healthy": true,
   "zombies": 345
}

和load函数(声明variables为全局变量,以避免创建相同的变量,但仅限于局部变量)

def load():
   global variables
   with open("data.txt", "r") as file:
       variables = json.load(file)

相关问题 更多 >