gpt4 book ai didi

python - python3 中的解析器不通过 argparse 从命令行获取定界符值

转载 作者:行者123 更新时间:2023-11-28 16:47:29 25 4
gpt4 key购买 nike

<分区>

我已经编写了一个简单的脚本作为满足我的 awk/sed 要求的高级工具。在脚本中,我根据查询文件一列的值比较两个文件,然后从主文件中提取整个条目。该脚本允许您为每个文件输入列值和分隔符。

问题是当从命令行给出时,脚本无法识别“分隔符”选项。

这是我的代码(部分):

##- - - - - - - -- - - - - - Arguments - - - - - - - - - - - - - -##
parser = argparse.ArgumentParser()

## Command line options
parser.add_argument("-m", "--master", dest="master", help="master file")
parser.add_argument("-q", "--query", dest="query", help="queries to be extracted")
parser.add_argument("-d", "--delimiter", dest="delimiter", default='\t', help="delimiter in master")
parser.add_argument("-p", "--position", dest="position", default='1', help="position/column of value in master")
parser.add_argument("-d2", "--delimiter2", dest="delimiter2", default='\t', help="delimiter in query")
parser.add_argument("-p2", "--position2", dest="position2", default='1', help="position/column of value in query")

args = parser.parse_args()

def Extractor(master, query):

out_file = ('%s_matched_%s' % (query,master))
fh_out = open(out_file, 'w')

query_set = () ## To unique query set
for i in query:
key = i.split('args.delimiter2')[int(args.position2)] ## Key is the value on which matching will be done
query_set.add(key)

如您所见,我从命令行获取了“查询文件”定界符的选项,并通过 argparse 在脚本中使用它们,但这不起作用。仅当我在脚本中明确提及分隔符时才有效,例如:

key = i.split('\t')[args.position2] ## Key is the value on which matching will be done

我给出的命令行选项是:

$ py3 ExtractHeaders_v01.py -m ABC.csv -q XYZ.list -d2 \t -d , -p 1 -p2 0

在哪里

  • ABC.csv 是从中提取条目的主文件。
    • 第二列将用于匹配(-p 1)
    • 它的分隔符是逗号(-d ,)
  • XYZ.list 是查询文件。
    • 第一列将用于匹配(-p2 0)
    • 它的分隔符是制表符(-d2\t)

请帮助我理解为什么从命令行给出时脚本不使用分隔符。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com