如何使用Python對引數進行解析
如何使用Python對引數進行解析
主要用到一個庫argparse
,用ArgumentParser
建立引數解析物件ArgumentParser
,而用add_argument()
在解析物件裡新增要解析的引數. 最後用parse_args()
進行解析,返回引數所在的名稱空間。如果涉及到子命令,則還需要add_subparsers
。
第一步:建立ArgumentParser
物件。
import argparse
parser = argparse.ArgumentParser(description=`covert all-sites vcf to fa`)
儘管還有其他許多引數,諸如prog
,usage
,add_abbre
等,但大部分情況只需要用到description
引數,用來說明這個命令列工具的用途即可。
第二步:新增需要解析的引數
parser.add_argument(`--filepath`, `-f`,nargs=1,required=True,help=`provide a vcf file path`)
這裡表明,需要提供一個檔案路徑,且是必須。
第三步:解析命令
args = parser.parse_args()
綜上,整合我已經寫了的vcf轉換成fa的程式碼,最後如下
import argparse
import re
# parse the args
parser = argparse.ArgumentParser(description=`convert all-sites vcf to fa.`)
parser.add_argument(`--filepath`,`-f`, nargs=1, required=True, help=`a vcf file path`)
args = parser.parse_args()
vcf = open(args.filepath[0])
pattern = re.compile(`.*?DP=(\d+);.*?`)
current_pos = 0
min_depth = 15
seq_arr = [i for i in range(13124)]
for line in vcf.readlines():
cols = line.split(` `)
# get the current position
current_chr = cols[0]
pos = int(cols[1]) - 1
# get the reference base and alternative base
ref_base = cols[3]
alt_base = cols[4]
depth = int(re.findall(pattern = pattern, string= cols[7])[0])
if depth > min_depth:
if alt_base == `.`:
seq_arr[pos] = ref_base
else:
seq_arr[pos] = ``
else:
seq_arr[pos] = ``
fa = ``.join(seq_arr)
vcf.close()
with open(`result.fa`,`wb`) as f:
f.write(fa)
程式碼還有繼續的優化的餘地。不過能用就行了。
相關文章
- python使用引數對巢狀字典進行取值Python巢狀
- 使用 Python 解析引數Python
- Python如何對浮點數進行取整操作?Python
- SpringBoot介面 - 如何優雅的對引數進行校驗?Spring Boot
- 使用acorn對JavaScript程式碼進行解析。JavaScript
- python argparse(引數解析模組)Python
- python引數解析argparse用法Python
- 使用JAXP對xml文件進行DOM解析基礎XML
- 使用cJSON庫對JSON格式進行解析JSON
- samtools flagstat引數對比對的bam檔案進行統計
- 效能測試乾貨分享:JMeter如何使用Bean Shell進行引數化?JMeterBean
- Oracle引數檔案解析——引數解析Oracle
- 使用JAXP進行DOM解析_SAX解析
- Python如何對多個sheet表進行整合?Python
- 如何在Python中對dicts列表進行排序Python排序
- Python命令列引數解析模組argparsePython命令列
- python中的argparse模組(引數解析)Python
- C#程式碼實現對HTTP POST引數進行排序C#HTTP排序
- 如何使用Python、Transformers和scikit-learn對文字進行分類?PythonORM
- spring-boot 使用hibernate validation對引數進行優雅的校驗Springboot
- 如何使用Nginx對Artifactory進行http應用NginxHTTP
- Python 快速教程(進階篇04):函式的引數對應Python函式
- SpringBoot如何優雅的進行引數校驗Spring Boot
- 如何使用python進行網頁爬取?Python網頁
- 如何使用 Python 進行字串格式化Python字串格式化
- 使用AFNetworking進行引數形式的GET請求
- 使用DataPump的Sample引數來進行資料抽樣
- 封裝axios請求並對提交引數進行校驗封裝iOS
- 使用python對oracle進行簡單效能測試PythonOracle
- [python]使用xlrd對Excel表格進行讀寫操作PythonExcel
- Python對字典進行排序Python排序
- dhtmlxGantt如何對任務進行分組使用教程HTML
- 命令列引數解析模組argparse的使用命令列
- 使用 Swift 進行 JSON 解析SwiftJSON
- Shell解析引數
- 使用jaxp解析器dom方式對xml節點進行操作XML
- 對N個數進行排序排序
- 在.Net Web Api中使用FluentValidate進行引數驗證WebAPI