使用argparse传递目录(不需要类型检查)
我写了一个文件爬虫,现在想对它进行扩展。我想用一个叫做argparse的工具来处理脚本的设置,包括在命令行中传入起始目录。
举个例子:/var/some/directory/
我已经让其他几个参数正常工作了,但就是无法正确传入这个目录。我不在乎它前面有没有标志(比如-d /path/to/start/
),但我需要确保这个参数是必须的,因为这是脚本运行的唯一必选项。
代码示例:
parser = argparse.ArgumentParser(description='py pub crawler...')
parser.add_argument('-v', '--verbose', help='verbose output from crawler', action="store_true")
parser.add_argument('-d', '--dump', help='dumps and replaces existing dictionaries', action="store_true")
parser.add_argument('-f', '--fake', help='crawl only, nothing stored to DB', action="store_true")
args = parser.parse_args()
if args.verbose:
verbose = True
if args.dump:
dump = True
if args.fake:
fake = True
1 个回答
4
只需在你的 args = parser.parse_args()
这一行之前添加:
parser.add_argument('directory',help='directory to use',action='store')
从命令行做个简单测试可以看到,它的效果是对的(在脚本最后打印出 args
):
$ python test.py /foo/bar/baz
Namespace(directory='/foo/bar/baz', dump=False, fake=False, verbose=False)
$ python test.py
usage: test.py [-h] [-v] [-d] [-f] directory
test.py: error: too few arguments