我想在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
答案 0 :(得分:1)
如果你想获得命令行提供的质量,它将是这样的代码:
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