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

0 投票
1 回答
1233 浏览
提问于 2025-04-17 16:54

在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能够获取这些文件的文件名,因为有些脚本只是把文件名传递给其他程序,而不需要打开或读取文件。我该如何获取一个迭代器,返回文件名,同时又能允许像--outdir这样的其他参数在通配符友好的选项(在这个例子中是--input)之后传递呢?谢谢。

1 个回答

2

在Unix系统中,当你输入像*.txt这样的命令时,它会自动把所有以.txt结尾的文件名分开,然后再传给你的程序;而在Windows的命令行中,这个过程不会发生。

假设你在一个不会自动扩展的环境中,比如你输入python prog.py '*.txt',那么你可以使用glob.glob()这个工具,自己来处理这些文件名的扩展。

撰写回答