2014-02-26 31 views
1

我想学习使用教程的Python。我碰到这个代码就来了:Python glob查询

quote.extend(['/%s' % f for f in glob.glob('test/test/'+`doc`+'.*.doc')]) 

这是否意味着一个名为引号追加/延长test/test/1.doc等变量? /%s' % f for f是什么意思?

+2

' '/%s'%f'是一个字符串格式 – njzk2

+0

用'filename'替换'f'可能会让这段代码更容易阅读...... – Matt

回答

4

想象一下这样的:

quote.extend([('/%s' % f) for f in glob.glob('test/test/'+`doc`+'.*.doc')]) 

所以:

此外,

`doc` 

相同repr(doc)(和该语法已过时,它是非法在Python 3)。

所以,你也可以这样写

newfiles = [] 
for f in glob.glob('test/test/'+ repr(doc) + '.*.doc'): 
    newfiles.append("/" + f) 
quote.extend(newfiles) 

可以简化为

for f in glob.glob('test/test/'+ repr(doc) + '.*.doc'): 
    quote.append("/" + f) 
0

quote是由另一个列表中,这是使用list comprehensons动态创建扩展列表。 Here是python文档中的细节。列表解析看起来像

[x for x in foo] 

"/%s"被称为字符串格式化。这里又涉及string formatting

基本上glob.glob()查找匹配给出该模式的所有文件的文档,字符串格式化操作增加了一个前置/和列表理解形成的所有字符串列表,然后将其添加到quote