【发布时间】:2021-08-01 09:16:03
【问题描述】:
我有一个脚本,当前同时接受 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()
【问题讨论】:
-
等等,什么?
argparse的主要目的是解析sys.argv。你为什么还要自己处理sys.argv? -
如果您不指定其他内容,
argparse已经从sys.argv获取输入。 -
使用其中一种来修复它,而不是同时使用。
-
...那你为什么要看
sys.argv,而不是看unknown? (或者,更好的是,告诉 argparse 将位置参数放入args内的变量中?) -
该脚本之前使用了
sys.argv,我对其进行了编辑以添加argparse参数。但是,脚本的原作者希望我将sys.argv输入转换为argparse以便他们接受我的公关。
标签: python python-3.x argparse argv