[英]Converting sys.argv to positional argparse argument?
I have a script that currently takes both sys.argv
and argparse
arguments.我有一个脚本,目前同时使用sys.argv
和argparse
arguments。 I need to change the sys.argv
input into a positional argparse
argument.我需要将sys.argv
输入更改为位置argparse
参数。 How would I do this?我该怎么做?
Script (irrelevant sections omitted):脚本(不相关部分省略):
import sys
import argparse
from pathlib import Path
parser = argparse.ArgumentParser()
parser.add_argument("-ru", "--remove-unparsable", dest="remove_unparsable",
action="store_true",
help="When this option is enabled, unparsable fonts are "
"removed instead of ignored")
args, unknown = parser.parse_known_args()
def handle_path(path: Path):
if path.stem.startswith("."):
return
if path.is_dir():
for f in path.iterdir():
handle_path(f)
else:
handle_file(path)
def main():
if len(sys.argv) == 1:
print(f"Usage: {sys.argv[0]} [<files>]")
else:
for path in sys.argv[1:]:
if not path.startswith("-"):
handle_path(Path(path))
if __name__ == "__main__":
main()
You could do the following:您可以执行以下操作:
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-ru", "--remove-unparsable", dest="remove_unparsable",
action="store_true",
help="When this option is enabled, unparsable fonts are "
"removed instead of ignored")
parser.add_argument("files", nargs="+")
args, unknown = parser.parse_known_intermixed_args()
for path in args.files:
handle_path(Path(path))
Here, ArgumentParser.parse_known_intermixed_args
handles the positional files
argument, which can be intermixed with named arguments such as -ru
and unknown arguments.在这里, ArgumentParser.parse_known_intermixed_args
处理位置files
参数,它可以与命名的 arguments 混合,例如-ru
和未知的 arguments。 The nargs="+"
parameter specifies that at least one file must be present. nargs="+"
参数指定必须至少存在一个文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.