我想知道如何使用 Python 创建一个灵活的 CLI 界面。到目前为止,我想出了以下几点:
$ cat cat.py
#!/usr/bin/env python
from sys import stdin
from fileinput import input
from argparse import ArgumentParser, FileType
def main(args):
for line in input():
print line.strip()
if __name__ == "__main__":
parser = ArgumentParser()
parser.add_argument('FILE', nargs='?', type=FileType('r'), default=stdin)
main(parser.parse_args())
这处理标准输入和文件输入:
$ echo 'stdin test' | ./cat.py
stdin test
$ ./cat.py file
file test
问题是它不能以我想要的方式处理多个输入或没有输入:
$ ./cat.py file file
usage: cat.py [-h] [FILE]
cat.py: error: unrecognized arguments: file
$ ./cat.py
对于多个输入,它应该多次输入cat
文件,对于没有输入的输入,理想情况下应该具有与以下相同的行为-h
:
$ ./cat.py -h
usage: cat.py [-h] [FILE]
positional arguments:
FILE
optional arguments:
-h, --help show this help message and exit
关于使用 Python 创建灵活的 CLI 界面的任何想法?