在Python中从命令行读取Unix通配符文件名

在Python中从命令行读取Unix通配符文件名,python,shell,unix,command-line,optparse,Python,Shell,Unix,Command Line,Optparse,在Python中使用optpasse处理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)

在Python中使用
optpasse
处理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将在传递到程序之前将
*.txt
扩展为单独的参数;Windows的命令解释器将不可用


假设您使用的是一个不首先进行扩展的环境——例如,调用
python prog.py'*.txt'
,您可以使用它自己进行扩展。

您是否考虑到UNIX Shell会自己扩展这个glob?@wRAR如果他们扩展它,是否意味着我会通过一个文件名列表?如果*.txt始终转换为a.txt、b.txt,。。。等等,不会有问题的。但我不认为会发生这种情况。是的,它将扩展为一个以空格分隔的文件名列表。注意:由于python版本2.7,不鼓励使用optparse。optparse模块已弃用,不会进一步开发;argparse模块将继续开发。有关更多信息,请参阅。但要求单引号是不常见的。。我希望我的程序像其他unix实用程序一样工作。如
wc*.txt
。用glob解析它似乎也很复杂-如果我传入的文件名中包含
*
,该怎么办?我如何判断它是要扩展的glob还是文件名的一部分?