Python中用于从Column中筛选值的CommandLine选项



我想用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)

我写了一个函数来检查是否是数字,但如果其中一个不是数字,我想打印"quality not an int"或"count not an int

以下是argparse教程

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

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

最新更新