【发布时间】:2020-07-31 04:51:50
【问题描述】:
我有一个程序,它通过带有 argparse 的命令行获取文件夹路径和其他输入。我希望这个脚本在服务器上自动运行,但我也想保留它的 argparse 功能,以防我想手动运行脚本。有没有办法让脚本使用文件中预先生成的输入,但也可以使用 argparse 保留其基于标志的输入系统?这是我目前的实现:
parser = argparse.ArgumentParser(description='runs batch workflow on root directory')
parser.add_argument("--root", type=str, default='./', help="the path to the root directory
to process")
parser.add_argument("--data", type=str, default='MS', help="The type of data to calculate ")
args = parser.parse_args()
root_dir = args.root
option = args.data
我对这些东西很陌生,阅读 argparse 文档和 This stack overflow question 并不是我真正想要的,如果可能的话,我想保留根和数据标志,而不仅仅是用输入文件替换它们或标准输入。
【问题讨论】:
-
如果您将
argparse放在文件末尾的if __name__=='__main__'块中,那么它只会与文件被称为脚本一起使用。如果文件被导入,解析器不会运行,您可以通过导入脚本设置这些参数。 -
你的意思是有另一个脚本来导入这个脚本,并且该脚本可以处理输入文件吗?这可能是一个解决方案,但我想知道是否有一种聪明的方法可以在这个脚本中做到这一点,而不必制作另一个脚本来导入它。
标签: python-3.x stdin argparse