在我合作的一个python项目中,我们最初打算将输入文件中的信息解析到字典中。你知道吗
解析方法已经实现(here和here),问题是:代码在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中却不行吗?你知道吗
问题不在于字典,而在于类是如何创建的。在python3上,所有类都从
object
类继承(除非你真的让它从其他类继承),而在python2上,它们不会。你知道吗因此,python3上的
class A()
与python2上的class A(object)
相同,但它们是不同的东西:后者是“新样式类”,而前者是“旧样式类”。我也是一个Python3的家伙,所以这对我来说是新的,但是你可以找到更多关于这个SO thread的信息TL;DR:只要把
class FDBRegister():
替换成class FDBRegister(object):
就行了!我在这里测试过;)相关问题 更多 >
编程相关推荐