我正在尝试解析命令行参数,而我之前从未这样做过。我尝试了一些事情。下面的代码是我尝试的最后一件事,但我收到了错误:"无法识别的参数"。我希望能够提供像
这样的东西copy-column-csv.py cname=Quiz source=source.csv target=target.csv out=out.csv
在命令行上,但也能够以任何顺序拥有它。我不知道该如何解决这个问题。以下是我的代码:
import argparse
import sys, re
import numpy as np
import smtplib
from random import randint
import csv
import math
import pandas as pd
parser = argparse.ArgumentParser()
parser.add_argument('-cname')
parser.add_argument('-source')
parser.add_argument('-target')
parser.add_argument('-out')
args = parser.parse_args()
#col = sys.argv[1]
#source = sys.argv[2]
#target = sys.argv[3]
#newtarg = sys.argv[4]
sourceFile = pd.read_csv(source)
targetFile = pd.read_csv(target)
del targetFile[cname]
targetFile[col] = pd.Series(sourceFile[col])
targetFile.to_csv(out, index = False)
答案 0 :(得分:1)
假设结构良好的参数,您可以将sys.argv拆分为字典:
args_dict = {}
for arg in sys.argv[1:]:
split = arg.split('=')
args_dict[split[0]] = split[1]
args_dict将如下所示:
{'cname': 'Quiz',
'out': 'out.csv',
'source': 'source.csv',
'target': 'target.csv'}
你可以像这样访问元素:
print args_dict['cname']
print args_dict['out']
print args_dict['source']
print args_dict['target']
答案 1 :(得分:0)
这是我如何做的一个例子。
from optparse import OptionParser
from optparse import OptionGroup
parser = OptionParser(usage)
required = OptionGroup(parser, "Required Arguments")
required.add_option("--genome", dest="genome_file", help="File representing genome. FASTA nucleotide format. ")
required.add_option("--anno", dest="anno_file", help="File containing genome annotation information in GTF/GFF3 format. ")
required.add_option("--output", dest="prefix", help="Creates a folder named with the supplied prefix containing output files. ")
parser.add_option_group(required)
if len(args) != 0 or not options.genome_file or not options.anno_file or not options.prefix:
parser.error("Required arguments have not been supplied. \n\t\tUse -h to get more information.")
sys.exit()
运行时会传递参数,例如,使用--genome = myfile.txt,并且代码中的值变为options.genome_file。