我想学习使用教程的Python。我碰到这个代码就来了:Python glob查询
quote.extend(['/%s' % f for f in glob.glob('test/test/'+`doc`+'.*.doc')])
这是否意味着一个名为引号追加/延长test/test/1.doc
等变量? /%s' % f for f
是什么意思?
我想学习使用教程的Python。我碰到这个代码就来了:Python glob查询
quote.extend(['/%s' % f for f in glob.glob('test/test/'+`doc`+'.*.doc')])
这是否意味着一个名为引号追加/延长test/test/1.doc
等变量? /%s' % f for f
是什么意思?
想象一下这样的:
quote.extend([('/%s' % f) for f in glob.glob('test/test/'+`doc`+'.*.doc')])
所以:
glob.glob()
返回的迭代各f
,"/" + f
建立一个字符串(见String Formatting Operations)quote
。此外,
`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)
quote
是由另一个列表中,这是使用list comprehensons
动态创建扩展列表。 Here是python文档中的细节。列表解析看起来像
[x for x in foo]
"/%s"
被称为字符串格式化。这里又涉及string formatting
基本上glob.glob()
查找匹配给出该模式的所有文件的文档,字符串格式化操作增加了一个前置/和列表理解形成的所有字符串列表,然后将其添加到quote
' '/%s'%f'是一个字符串格式 – njzk2
用'filename'替换'f'可能会让这段代码更容易阅读...... – Matt