Python 如何对<;中缺少的属性进行例外处理;类别、列表>;?

Python 如何对<;中缺少的属性进行例外处理;类别、列表>;?,python,if-statement,for-loop,null,nonetype,Python,If Statement,For Loop,Null,Nonetype,读取数据后,我使用以下脚本: for sample in record.samples: print(type(sample)) 我得到: <class 'vcf.model._Call'> 我得到: Call(sample=MA605, CallData(GT=0/0, AD=[13, 0], DP=13, GQ=0, PB=None, PC=None, PG=0/0, PI=None, PL=[0, 0, 228], PW=0/0)) Call(sample=MA61

读取数据后,我使用以下脚本:

for sample in record.samples:
    print(type(sample))
我得到:

<class 'vcf.model._Call'>
我得到:

Call(sample=MA605, CallData(GT=0/0, AD=[13, 0], DP=13, GQ=0, PB=None, PC=None, PG=0/0, PI=None, PL=[0, 0, 228], PW=0/0))
Call(sample=MA611, CallData(GT=0/0, AD=[57, 0], DP=57, GQ=0, PB=None, PC=None, PG=0/0, PI=None, PL=[0, 0, 1369], PW=0/0))
Call(sample=MA622, CallData(GT=0/1, AD=[67, 14], DP=81, GQ=99, PB=None, PC=None, PG=0/1, PI=None, PL=[229, 0, 2535], PW=0/1))
Call(sample=MA625, CallData(GT=0/0, AD=[58, 0], DP=58, GQ=0, PB=None, PC=None, PG=0/0, PI=None, PL=[0, 0, 590], PW=0/0))
Call(sample=MA629, CallData(GT=1|0, AD=[24, 5], DP=29, GQ=67, PB=.,., PC=1.0, PG=1|0, PI=5060, PL=[67, 0, 952], PW=1|0))
Call(sample=Ncm8, CallData(GT=0/0, AD=[7, 0], DP=7, GQ=0, PB=None, PC=None, PG=0/0, PI=None, PL=[0, 0, 147
我正在尝试使用以下命令将输出写入文件:

output.write("{}\t{}\t{}\t{}\t{}"
             .format(contig1, pos1, ref_allele1, all_alleles1, all_freq1))
    for sample in record.samples:
        output.write("\t{}\t{}".format(sample['GT'], sample['PI']))
一切正常,但我有一行缺少
PI
字段-这意味着
PI
完全缺少,而不是(
PI=None
)。当我的脚本记录该行时,我得到了
AttributeError

回溯(最近一次呼叫最后一次):
文件“/home/everestial007/PycharmProjects/stitcher/pHASE-stitcher-Markov/pHASE-stitcher_stage01-4_nonInteractive-MarkovModel.py”,第221行,in
阶段块指数=记录。基因型('2ms02g')['PI']
文件“/home/everestial007/anaconda3/lib/python3.5/site packages/vcf/model.py”,第104行,在__
返回getattr(self.data,键)
AttributeError:“CallData”对象没有属性“PI”

如果
PI
值不在我的数据中(
record.sample
),如何将其设置为period(

我尝试了几种方法。我认为可行的方法之一是:

output.write("\t{}\t{}".format(sample['GT'] or None, sample['PI'] or None))
但是,仍然失败

任何建议


谢谢,

您可以尝试
sample.get('PI')或'。

未定义键时,Get默认返回
None

output.write("\t{}\t{}".format(sample['GT'] or None, sample['PI'] or None))