我有一段代码,当它通过终端运行时,它提供了所有参数,但是我希望一个参数是可选的,并且如果提供了这个参数,只运行IF语句,这里是我的代码:
import argparse
import sys
import csv
parser= argparse.ArgumentParser()
parser.add_argument('-r', '--range', help= 'Enter range of two m/z values in format of x,y', default= '1000,1500')
parser.add_argument('files', nargs= '*')
parser.add_argument('-a', '--amino_acid', help= 'Enter one letter code of amino acid you wish to search for (optional)')
args=parser.parse_args()
if aa in sequence:
amino_acids.append(str(sequence))
所以我希望"如果aa顺序"如果给出-a arg,则只执行part,但是如果没有给出该参数,则无论如何它都会尝试运行它并失败。任何帮助表示赞赏,谢谢。
错误:
Traceback (most recent call last):
File "project2.py", line 32, in <module>
if aa in sequence:
TypeError: 'in <string>' requires string as left operand, not NoneType
答案 0 :(得分:1)
if aa in sequence:
因为您没有提供aa
作为参数,而sequence
是str
(可能会使用list
)in
投诉。
演示:
>>> None in []
False
>>> None in ""
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
TypeError: 'in <string>' requires string as left operand, not NoneType
>>>
所以只需修复:
if aa and aa in sequence:
或(显式None
测试):
if aa is not None aa in sequence:
所以如果aa
为空/ None
,则第二个条件不会被执行