【发布时间】:2013-02-24 00:03:33
【问题描述】:
在 Python 中使用 optparse 处理 Unix 样式通配符参数的正确方法是什么?我有:
myscript.py:
from optparse import OptionParser
parser = OptionParser()
parser.add_option("--input", dest="input", default=None, nargs=1)
parser.add_option("--outdir", dest="outdir", default=None, nargs=1)
(options, args) = parser.parse_args()
我希望能够做到:
myscript.py --input *.txt --outdir mydir/
我不想读取与*.txt 匹配的所有文件的内容。我希望myscript.py 访问他们的文件名,因为某些脚本只是将文件名传递给其他程序,而无需打开/读取文件。如何获得一个返回文件名的迭代器,同时仍然允许在通配符友好选项(在本例中为 --input)之后传递其他参数,如 --outdir?谢谢。
【问题讨论】:
-
您是否考虑到 UNIX shell 会自己扩展这个 glob?
-
@wRAR 如果他们扩展它,这是否意味着我通过了文件名列表?如果 *.txt 总是被翻译成 a.txt,b.txt,... 等等就没有问题了。但我不认为会发生这种情况
-
是的,它将扩展为以空格分隔的文件名列表。
-
注意:自 python 2.7 版起,不鼓励使用 optparse。 optparse 模块已弃用,不会进一步开发; argparse 模块将继续开发。请参阅PEP 0389 了解更多信息。
标签: python shell unix command-line optparse