下面是我想要做的事情的简况。这是很长的,但我正试图尽可能具体。
我正在制作一个文字冒险游戏与蟒蛇。问题是文件太大了,我需要为不同的定义创建姐妹文件,因为编辑开始变得迟缓。
主文件。当我运行主文件时,它可以很好地获取定义。但是姐妹文件吐出了一个错误,它无法在代码中读取所需的字典。所以我试着把字典从主文件复制到姐妹文件。它可以工作,但是由于字典中的所有数据都不是从一个文件传输到另一个文件,所以我尝试了这一点。
档案1:
import os,sys,ast
from file2 import *
player = {'name' : 'player',
'hp' : 10}
enemy = {'name' : 'enemy2',
'damage' : 5}
attack()档案2:
import os,sys,ast
player = {'name' : 'player',
'hp' : 10}
enemy = {'name' : 'enemy2',
'damage' : 5}
with open("file1.py") as f:
data = f.read(player)
dictionary = ast.literal_eval(data)
def attack():
player['hp'] = player['hp'] - enemy['damage']我一直在犯这个错误:
TypeError: argument should be integer or None, not 'dict'但是,当我试图将它转换为整数时:
档案2:
import os,sys,ast
enemy1 = {'name' : enemy1,
'damage' : 10}
enemy2 = {'name' : enemy2,
'damage' : 5}
with open('file.py') as f:
data = f.read(int(str(player)))
dictionary = ast.literal_eval(data)
def attack():
player['hp'] = player['hp'] - enemy['damage']我得到:
ValueError: invalid literal for int() with base 10: '{}'因为非整数值。
我试图只将一个特定的字典加载到文件中,而不是同时加载其他所有的字典。我不能仅仅在这两个文件中拥有所有精确的字典,原因是定义改变了字典中的值。请注意,我的知识非常有限,大部分是通过自己自学的,像这样的网站和极客的极客。
我希望这个对我的问题的解释能涵盖我想要问的问题。
发布于 2022-01-23 02:16:59
编辑
正如评论者建议的那样,重写攻击函数以接受参数,而不是使用全局参数。
# File 2
def attack(player, enemy):
player['hp'] = player['hp'] - enemy['damage']
# File 1
…
attack(player, enemy)发布于 2022-01-24 03:33:21
所以我终于找到了我的问题的答案。
您要做的事情(同时仍然使用globals)是将特定的字典加载到文本文件中:
file1:
import os,sys,ast
dictionary = {...}
from file2 import function
filehandler = open("file.txt", "a")
data = str(dictionary)
filehandler.write(data)
filehandler.close()
function()
with open('file.txt') as f:
data = f.read()
dictionary = ast.literal_eval(data)
os.remove("file.txt")file2:
import sys,os,ast
dictionary = {...}
def function():
with open('file.txt') as f:
data = f.read()
dictionary = ast.literal_eval(data)
os.remove("file.txt")
...
filehandler = open("file.txt", "a")
data = str(dictionary)
filehandler.write(data)
filehandler.close()这是一个关于发生什么的解释。
在文件1中,它获取“字典”中的每个值,创建一个新的文本文件,并将其写入文本文件。然后调用文件2中的函数。
然后,file2中的函数获取文本文件并读取它。它从文件中获取字典信息,将其加载到自己的字典中,并删除文本文件,这样它就不会占用空间。
函数完成后,它获取字典中的新值,创建一个新的文本文件,并将其写入文本文件。然后文件1(因为函数已经完成)抓取文本文件,读取它,获取信息并用新信息替换旧字典信息,并删除文本文件。
请注意,据我所知,您需要这样做,创建文本文件,并为每个不同的字典读取它们。因此,我建议使用一个函数,对您需要转移的每一个字典都这样做。
之所以出现这种情况,是因为我的函数的工作方式需要使用多个不同的字典,有时还需要使用不同数量的字典。
因此,对于任何和我有同样问题的人,都要做我的回答。但我建议编写函数来接受论点。
https://stackoverflow.com/questions/70818564
复制相似问题