Python中文
首页
教程
问答
标签
搜索
登录
注册
Python对象正在写入不可读取的数据
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>Python是我学习的第一种语言,目前我正在研究用于存储简单数据的文件输入/输出系统。我做了一个关于简单写作和酸洗的练习。出于我的目的,我想使用简单的写作,因为我想编辑我的“保存文件”。在</p> <p>当数据是字符串时,我成功地存储和检索数据。问题是,当我存储对象时,它将其存储为不可读的格式:</p> <pre><code><__main__.Character object at 0x0078FE10> </code></pre> <p>我怎样才能把上面这个不可读的格式返回到我的对象中呢?Python是否有一个内置函数可以实现这一点?在</p> <p>或者,在写入数据文件之前,我是否必须将对象转换为包含所有重要变量的字符串?在</p> <p><strong>编辑:哦,忘了代码!</strong></p> ^{pr2}$ <p>这是I/O系统的读取部分。您可以看到它读取数据>;将字符串转换为列表>;拆分列表中的参数>;使用参数创建对象。在</p> <pre><code>with open('charData', 'r') as data: data = data.read() # Read the contents of the file into memory. print (data) my_list = data.splitlines() print (my_list[0]) # Print the list. char_data = ast.literal_eval(my_list[0]) new_character = Character(*char_data) </code></pre> <p>然后我有自己的函数来显示对象统计信息:</p> <pre><code>new_character.stats() </code></pre> <p>吐出</p> <pre><code>Harley is level 3 with 10 health </code></pre> <p>正如你所见,它很好用。但如果我用新建文件.write(new_character)”它本质上是对象的字符串,从上面看是“<;<strong>main</strong>.character object at 0x0215FE10>;”。在</p> <p>在过去的一个小时里,我一直在这个对象中使用<strong>str</strong>,但还没有找到一种方法来使用该函数来找到解决方案,并从更有经验的人那里寻求指导。在</p> <p><strong>编辑Matt Habel:</strong></p> <pre><code>def __str__(self): print ("[\"", end="") print (self.name, end="") print ("\"", end=", ") print (self.exp, end="") print (",", end=" ") print (self.atk, end="") print ("]") </code></pre> <p>这将输出:</p> <pre><code>["Harley", 300, 3] print(new_character) TypeError: __str__ returned non-string (type NoneType) </code></pre> <p>我制作自己的“list”的理由是,我可以使用“AST”模块来定义list参数。我稍后会将上面的列表转换为“new_character2”,并使用以下方法编写:</p> <pre><code>newFile = open("charData","w") newFile.write(new_character2) </code></pre> <p>立即使用:</strong></p> <p>我使用return函数,而不是上面复杂的解析。在</p> <pre><code> def export(self): self.name = str(self.name) self.exp = str(self.exp) self.atk = str(self.atk) matt_data = "[\"%s\", %s, %s]" % (self.name, self.exp, self.atk) return matt_data matt_export = new_character.export() print(matt_export) </code></pre> <p>吐出:</p> <pre><code>["Harley", 600, 3] </code></pre> <p>而且没有错误代码!在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>要保存对象,必须对其进行序列化。根据您使用的是python2.7.x还是3.x,您有不同的特定选项,但下面是pickle docs的版本,它将对<a href="https://docs.python.org/2/library/pickle.html" rel="nofollow" title="2.7.x">2.7.x</a>有所帮助。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何合并多个PDF文件?
10 回答
如何合并多个xarray数据变量及其坐标?
9 回答
如何合并多个列中具有重复值的行
5 回答
如何合并多个唯一id
3 回答
如何合并多个图纸并使用图纸名称的名称重命名列名?
7 回答
如何合并多个字典并添加同一个键的值?(Python)
10 回答
如何合并多个搜索结果文件(pkl)以将它们全部打印在一起?
9 回答
如何合并多个数据帧
8 回答
如何合并多个数据帧并使用Pandas为假人添加列?
9 回答
如何合并多个数据帧并按时间戳排序
6 回答
如何合并多个数据帧的列表并用另一个lis标记每列
9 回答
如何合并多个数据框中的列
1 回答
如何合并多个文件?
3 回答
如何合并多个查询集?
1 回答
如何合并多个绘图?
4 回答
如何合并多个词典
3 回答
如何合并多个输入数据集(数据帧)?
6 回答
如何合并多条记录中拆分的文本行
2 回答
如何合并多索引列datafram
5 回答
如何合并多级(即多索引)数据帧?
4 回答