首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python、optparse和文件掩码

Python、optparse和文件掩码
EN

Stack Overflow用户
提问于 2008-11-23 16:12:43
回答 4查看 2.7K关注 0票数 3
代码语言:javascript
复制
if __name__=='__main__':
    parser = OptionParser()
    parser.add_option("-i", "--input_file", 
                    dest="input_filename",
                      help="Read input from FILE", metavar="FILE")

    (options, args) = parser.parse_args()
    print options

结果是

代码语言:javascript
复制
$ python convert.py -i video_*
{'input_filename': 'video_1.wmv'}

当前文件夹下有video_1-6.wmv。问题是为什么video_*会变成video_1.wmv。我哪里做错了?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-11-23 16:20:25

Python与此无关--它是shell。

打电话

代码语言:javascript
复制
$ python convert.py -i 'video_*'

它会传入通配符。

其他6个值是作为args传递的,没有附加到-i,就像运行python convert.py -i video_1 video_2 video_3 video_4 video_5 video_6一样,并且-i只附加到紧邻的下一个参数。

也就是说,您最好不要使用options.input,而是直接从args读取输入文件名。

票数 8
EN

Stack Overflow用户

发布于 2008-11-23 16:20:51

打印出args,您将看到其他文件的位置...

它们在argv中被转换为单独的参数,optparse只接受第一个参数作为input_filename选项的值。

票数 2
EN

Stack Overflow用户

发布于 2008-11-23 20:22:26

澄清一下:

代码语言:javascript
复制
aprogram -e *.wmv

在Linux shell上,所有通配符(*.wmv)都由shell展开。所以aprogram实际上接收到了参数:

代码语言:javascript
复制
sys.argv == ['aprogram', '-e', '1.wmv', '2.wmv', '3.wmv']

就像Charles说的,你可以引用参数,让它直接传入:

代码语言:javascript
复制
aprogram -e "*.wmv"

这将传入:

代码语言:javascript
复制
sys.argv == ['aprogram', '-e', '*.wmv']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/312673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档