Python Shelve编写空白列表/字典
我正在尝试制作一个API,在我制作的游戏上创建自定义地图,但shelve只编写空白列表和字典 我尝试这样存储它: 显示的地图名称的名称 name_1表示被视为变量的名称 纹理的文件路径的纹理 风是指所吹的风的大小 这是我的密码:Python Shelve编写空白列表/字典,python,python-3.x,dictionary,shelve,Python,Python 3.x,Dictionary,Shelve,我正在尝试制作一个API,在我制作的游戏上创建自定义地图,但shelve只编写空白列表和字典 我尝试这样存储它: 显示的地图名称的名称 name_1表示被视为变量的名称 纹理的文件路径的纹理 风是指所吹的风的大小 这是我的密码: import tkinter.filedialog as tfd import shelve import shutil as os file1 = shelve.open("info") if "written" in file1: pass else:
import tkinter.filedialog as tfd
import shelve
import shutil as os
file1 = shelve.open("info")
if "written" in file1:
pass
else:
file1["name"] = []
file1["name_1"] = []
file1["textures"] = {}
file1["wind"] = {}
file1.close()
file1 = shelve.open("info")
name = input("Name: ")
name1 = input("Name zur Variablenspeicherung: ")
wind = input("Wind (*-*): ")
print("Wähle eine 1200x820 GIF-Datei als Hintergrund aus")
texture = tfd.askopenfilename()
os.copy(texture,"textures/"+texture.split("/")[-1].split("\\")[-1])
texture = "custom/textures/"+texture.split("/")[-1].split("\\")[-1]
print("Schreibe Datei...")
file1["name"].append(name)
file1["name_1"].append(name1)
file1["textures"][name1] = texture
file1["wind"][name1] = [int(wind.split("-")[0]),int(wind.split("-")[1])]
file1["written"] = 1
file1.close()
您需要使用writeback=True打开文件: 从: 由于Python语义的原因,工具架无法知道何时修改可变的持久字典条目。默认情况下,仅当指定给工具架时,才会写入修改的对象。请参见示例。如果可选写回参数设置为True,则访问的所有条目也会缓存在内存中,并在同步和关闭时写回;这可以使在持久性字典中变异可变项变得更容易,但是,如果访问了许多项,它会为缓存消耗大量内存,并且会使关闭操作非常缓慢,因为所有访问的项都被写回,因此无法确定哪些访问的项是可变的,也不知道哪些基因确实发生了变异
您需要使用writeback=True打开文件: 从: 由于Python语义的原因,工具架无法知道何时修改可变的持久字典条目。默认情况下,仅当指定给工具架时,才会写入修改的对象。请参见示例。如果可选写回参数设置为True,则访问的所有条目也会缓存在内存中,并在同步和关闭时写回;这可以使在持久性字典中变异可变项变得更容易,但是,如果访问了许多项,它会为缓存消耗大量内存,并且会使关闭操作非常缓慢,因为所有访问的项都被写回,因此无法确定哪些访问的项是可变的,也不知道哪些基因确实发生了变异 设置键时,shelve将写出对键的更改。它无法检测值的更改。附加到列表或为字典上的键赋值的值将不会被检测到 从: 由于Python语义的原因,工具架无法知道何时修改可变的持久字典条目。默认情况下,仅当指定给工具架时,才会写入修改的对象。请参见示例。如果可选写回参数设置为True,则访问的所有条目也会缓存在内存中,并在同步和关闭时写回;这可以使在持久性字典中变异可变项变得更容易,但是,如果访问了许多项,它会为缓存消耗大量内存,并且会使关闭操作非常缓慢,因为所有访问的项都被写回,因此无法确定哪些访问的项是可变的,也不知道哪些基因确实发生了变异 我的 将writeback参数设置为True并接受以下缺点:
file1 = shelve.open("info", writeback=True)
或显式分配回密钥:
names = file1["name"]
names.append(name)
file1["name"] = names
设置键时,shelve将写出对键的更改。它无法检测值的更改。附加到列表或为字典上的键赋值的值将不会被检测到
从:
由于Python语义的原因,工具架无法知道何时修改可变的持久字典条目。默认情况下,仅当指定给工具架时,才会写入修改的对象。请参见示例。如果可选写回参数设置为True,则访问的所有条目也会缓存在内存中,并在同步和关闭时写回;这可以使在持久性字典中变异可变项变得更容易,但是,如果访问了许多项,它会为缓存消耗大量内存,并且会使关闭操作非常缓慢,因为所有访问的项都被写回,因此无法确定哪些访问的项是可变的,也不知道哪些基因确实发生了变异
我的
将writeback参数设置为True并接受以下缺点:
file1 = shelve.open("info", writeback=True)
或显式分配回密钥:
names = file1["name"]
names.append(name)
file1["name"] = names
谢谢,我试试看。谢谢,我试试看。