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