在我合作的python项目中,我们最初打算将输入fasta文件中的信息解析为字典。
解析方法已经实现(here和here),问题是:在Python3中运行时代码工作正常(加载fasta文件,解析FDB数据结构的信息,然后它保存在一个新的fdb文件中),但是当它在Python 2中运行时,生成的字典不包含读取fasta文件中的值信息,只包含键。
以上链接显示为解析而开发的代码,下面的块包含我们执行的测试(适用于Python 3,但不能在Python 2中保存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)
有没有人知道为什么词典在Python 3中正常工作,而在Python 2中却没有?
答案 0 :(得分:2)
问题不在于字典,而在于如何创建类。在python3上,所有类都继承自object
类(除非你实际上让它继承自其他类),在python2上它们不会。
因此,python3上的class A()
与class A(object)
相同,但在python2上它们是不同的东西:后者是“新风格类”,而前者是“旧风格类” 。我也是一个python3人,所以这对我来说是新的,但是你可以找到关于这个https://github.com/kelemen/netbeans-gradle-project/wiki/Built-In-Tasks的更多信息
TL; DR:只需将class FDBRegister():
替换为class FDBRegister(object):
即可!我在这里测试过;)