将 sys.argv 转换为位置 argparse 参数?
Converting sys.argv to positional argparse argument?
我有一个脚本目前接受 sys.argv
和 argparse
参数。我需要将 sys.argv
输入更改为位置 argparse
参数。我该怎么做?
脚本(省略无关部分):
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()
您可以执行以下操作:
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))
此处,ArgumentParser.parse_known_intermixed_args
处理位置 files
参数,它可以与命名参数混合使用,例如 -ru
和未知参数。 nargs="+"
参数指定必须至少存在一个文件。
我有一个脚本目前接受 sys.argv
和 argparse
参数。我需要将 sys.argv
输入更改为位置 argparse
参数。我该怎么做?
脚本(省略无关部分):
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()
您可以执行以下操作:
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))
此处,ArgumentParser.parse_known_intermixed_args
处理位置 files
参数,它可以与命名参数混合使用,例如 -ru
和未知参数。 nargs="+"
参数指定必须至少存在一个文件。