通过Python3在字典中保存信息可以很好地工作,但在Python2中不行

2024-09-27 22:19:52 发布

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

在我合作的一个python项目中,我们最初打算将输入文件中的信息解析到字典中。你知道吗

解析方法已经实现(herehere),问题是:代码在Python3中运行时工作正常(加载fasta文件,对其信息进行FDB数据结构解析,然后将其保存在新的FDB文件中),但在python2中运行时,生成的字典不包含读取fasta文件的值信息,只有钥匙。你知道吗

上面的链接显示了为解析而开发的代码,下面的块包含了我们执行的测试(在python3中可以正常工作,但在python2中不保存fasta信息)。你知道吗

print("Instantiating a FastaDB object...")
fasta_db = FastaDB()
print("Defining input file name...")
filename = "../FastaDB/test2.fasta"
username = "inacio_medeiros"
print("Invoking FDB parsing...")
parsed_fdb_structure = fasta_db.ImportFasta(filename, username)
print("Saving in file...")
content = json.dumps(parsed_fdb_structure)
fdb_file_name = filename+".fdb"
fdb_file = open(fdb_file_name, "w")
fdb_file.write(content)

有人知道为什么字典在Python3中运行良好,而在Python2中却不行吗?你知道吗


Tags: 文件代码name信息字典herefilenamepython3
1条回答
网友
1楼 · 发布于 2024-09-27 22:19:52

问题不在于字典,而在于类是如何创建的。在python3上,所有类都从object类继承(除非你真的让它从其他类继承),而在python2上,它们不会。你知道吗

因此,python3上的class A()与python2上的class A(object)相同,但它们是不同的东西:后者是“新样式类”,而前者是“旧样式类”。我也是一个Python3的家伙,所以这对我来说是新的,但是你可以找到更多关于这个SO thread的信息

TL;DR:只要把class FDBRegister():替换成class FDBRegister(object):就行了!我在这里测试过;)

相关问题 更多 >

    热门问题