Python中用于从列中筛选值的命令行选项

Python中用于从列中筛选值的命令行选项,python,parsing,command-line-arguments,bioinformatics,Python,Parsing,Command Line Arguments,Bioinformatics,我想用Python为我正在处理的以制表符分隔的文件编写一个函数,从列中过滤出值,并在运行脚本时将该参数作为命令行选项 因此,如果限制为10,则过滤掉所有值小于10的行。 另外,我想检查输入的数字是否为数字,否则会显示消息“its not numeric” 因此,命令行应该是: python script.py file --quality [limit] Python脚本: import sys arg = [] for a in sys.argv: arg.append(a)

我想用Python为我正在处理的以制表符分隔的文件编写一个函数,从列中过滤出值,并在运行脚本时将该参数作为命令行选项

因此,如果限制为10,则过滤掉所有值小于10的行。 另外,我想检查输入的数字是否为数字,否则会显示消息“its not numeric”

因此,命令行应该是:

python script.py file --quality [limit]
Python脚本:

import sys
arg = []
    for a in sys.argv:
    arg.append(a) 
        quality = arg[2]
更具体地说,我正在处理的文件是一个Samfile,并且使用包 Pysam,在第5列中有映射质量限制

命令行:

  python script.py samfile --quality [limit]
我正在使用以下命令读取SAM文件:

 samfile = pysam.Samfile(arg[1], "rb" )
 mapqlim = arg[2]
我是Python初学者,但看到了其中一个模块argparse。如何在Python中使用argparse实现这一点

用于检查数字的函数

  def is_number(s):
     try:
       val = int(s)
     except ValueError:
       print "That is not an int!"
如果传递了多个命令行参数,并检查是否为数字

  is_number(args.quality)
  is_number(args.count)
我写了一个函数来检查是否是数值的,但是如果其中一个不是数值,我想打印“质量不是整数”或“计数不是整数”,以两者中不为准,而不是“那不是整数”

如果您想获得命令行提供的质量,代码如下:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--quality", help="enter some quality limit")
args = parser.parse_args()
print "You gave quality = %s" % str(args.quality)
基本上,你向你的“解析器”中添加参数,然后你解析你的参数。结果是一个具有你期望值的属性的对象

我将其保存为
a.py
,然后运行以下命令:

$ python a.py --quality 10
You gave quality = 10

我们如何检查传递的参数是否为数字?使用一个非常标准的方法来判断python值是否为数字:我不知道如何检查命令行参数是否为数字。我是否在函数def中传递--quality?否,-quality是命令行选项的名称。我认为此模块不会让您强制参数为数字o为数值。相反,一旦获得值,您应该自己检查它是否为数值。使用我提供的链接。我可以编写一个函数来检查数值,但是如果传递了多个命令行参数。在这种情况下,我想在函数中打印哪个参数不是数值?我无法打印参数名称。