我编写了一个带有一个或多个输入文件的脚本.我希望能够单独指定脚本(A和B)和每个输入文件的选项(C和D).
用法应如下所示:
script.py [-A] [-B] [-C] [-D] file1 [[-C] [-D] file2] ...
Run Code Online (Sandbox Code Playgroud)
怎么办argparse?
谢谢!
像往常一样,这个问题似乎不完全是所需要的……抱歉。这是我的工作结果(受到 unutbu 的答案的启发),它还允许带有参数的每个文件选项。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-A', action = 'store_true')
parser.add_argument('-B', action = 'store_true')
args, unk = parser.parse_known_args()
file_parser = argparse.ArgumentParser()
file_parser.add_argument('-C', action = 'store_true')
file_parser.add_argument('-D', action = 'store_true')
file_parser.add_argument('-V', "--variable-list")
file_parser.add_argument('file')
fargs=[]
n=len(unk)
while True:
i=0
for i in range(n): # finding longest fully parsable tail
Parsed, unkf = file_parser.parse_known_args(unk[i:n])
if not unkf: break
if i==n: # did not found parsable tail
file_parser.parse_args(unk[0:n]) # cause error
else:
fargs.append(Parsed)
n=i
if (n<=0): break
fargs.reverse()
print args
for argl in fargs:
print argl
Run Code Online (Sandbox Code Playgroud)
调用此方法:
myscript.py -A -B -C -D file1 -C -V a,b,c file
Run Code Online (Sandbox Code Playgroud)
产量:
Namespace(A=True, B=True)
Namespace(C=True, D=True, file='file1', variable_list=None)
Namespace(C=True, D=False, file='file2', variable_list='a,b,c')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1836 次 |
| 最近记录: |