python命令行参数解析

getopt

使用getopt与sys包对命令行参数进行解析,流程如下:

  1. 导入getopt与sys包
  2. 分析命令行参数
  3. 对传入结果进行变量化

分析命令行参数

try:
    opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="])
except getopt.GetoptError:
    #print("error\n")

在getopt函数中第一个参数对应着sys传入的值,第二个参数是解析的短参数,第三个则是对应的长参数
字母后面加冒号或等号,表示后面会有相应的sys参数

参数变量化

opts是一个二元数组里面保存着参数和对应的值

[(‘-h’, ‘’), (‘-o’, ‘file’), (‘–help’, ‘’), (‘–output’, ‘out’)]

if len(opts)==5:
    for name,value in opts:
        if name in ("-h","--help"):
            usage()
            sys.exit()
        if name in("-g","--gff"):
            gfffile=value
        if name in("-s","--sgRNA"):
            sgRNAfile=value
        if name in("-l","--genelength"):
            genelength=int(value)
        if name in("-o","--outfile"):
            outfile=value
        if name in("-r","--sequence"):
            sgRNAsquencefile=value
else:
    print(">>>>>>>>>>>>>>>"+"Attention! lack parameters "+"<<<<<<<<<<<<")
    usage()
    sys.exit()

利用参数变量

解析到每个参数对应的sys值,后赋值给变量,之后就可以直接使用这个变量啦!同时使用了if进行判断,当没有输入参数时调用usage()和sys.exit()

进度条tqdm

使用python中tqdm包来显示进度条,简单用法是传递可迭代对象给tqdm函数

  1. tqdm函数接受一个迭代对象
  2. 一个描述行词语
##对迭代列表进行操作
    for i in tqdm(range(0,len(yourgenes)),desc="write file"):
        yourgenes[i]=yourgenes[i].strip("\n")
        out.write(">"+yourgenes[i]+"\n"+genelist[yourgenes[i]]+"\n")

参考

getopt1
getopt2
tqdm