Python中的命令行选项,用于过滤Column中的值

时间:2014-04-09 19:01:35

标签: python parsing command-line-arguments bioinformatics

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

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

因此,命令行将是:

python script.py file --quality [limit]

Python脚本:

import sys
arg = []
    for a in sys.argv:
    arg.append(a) 
        quality = arg[2]

更具体地说,我正在处理的文件是一个Samfile,并使用包 Pysam,在第5列中具有映射质量限制。

https://media.readthedocs.org/pdf/pysam/latest/pysam.pdf

命令行:

  python script.py samfile --quality [limit]

我正在使用这个读取samfile:

 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)

我写了一个函数来检查数字,但是我想要打印以防其中一个不是数字,打印“质量不是int”或“count不是int”,取而代之的是“不是int

1 个答案:

答案 0 :(得分:1)

这是argparse tutorial

如果你想获得命令行提供的质量,它将是这样的代码:

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