简体   繁体   English

将 sys.argv 转换为位置 argparse 参数?

[英]Converting sys.argv to positional argparse argument?

I have a script that currently takes both sys.argv and argparse arguments.我有一个脚本,目前同时使用sys.argvargparse 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM