从pubchem下载的sdf文件是一个压缩格式,一个sdf里面有多个化学物质,需要拆分开单独保存,

先将大的sdf拆分成一个个单独的sdf小文件,然后再读取每一行小文件的第一行获取CID编号

# coding=utf-8

def splitSDF():
    file_name = "48600001_48625000.sdf"
    # 读取的文件内容保存在列表里
    file_str_list = []
    # 设置文件索引
    index = 0
    # import pdb
    # pdb.set_trace()
    with open(file_name, 'r+') as f:
        for ln in f:
            if ln != "$$$$
":
                file_str_list.append(ln)
            else:
                # 将对应的内容按照索引写入文件
                index = index + 1
                with open('{0}.sdf'.format(index), 'w+') as wt:
                    for ds in file_str_list:
                        wt.write(ds)
                file_str_list = []


if __name__ == '__main__':
    splitSDF()

python拆分pubchem SDF文件-冯金伟博客园