<p>您可能试图记住<a href="https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions" rel="nofollow noreferrer">list comprehension</a>,这是一种简洁易读的<code>for</code>循环的方法。在</p>
<pre><code>mylist = [ deal_with( 'realKappaCoadd%03d_5.fit' % i ) for i in range(200) ]
</code></pre>
<p>(文件路径缩短以提高可读性)</p>
<p>每当您发现自己想要初始化一个空的<code>list</code>,然后在<code>for</code>循环中将其<code>.append()</code>初始化为它,请考虑<a href="https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions" rel="nofollow noreferrer">"list comprehension"</a>在一行中完成。或者是<a href="https://docs.python.org/2/reference/expressions.html#generator-expressions" rel="nofollow noreferrer">"generator expression"</a>,这是一个密切相关的语法,但它的计算是懒惰的(这将允许您处理事物“深度优先”,而表面上似乎<em>似乎</em>去广度优先,但我怀疑这对您的情况是否有任何真正的好处)。在</p>
<p>您可能还发现迭代<code>glob</code>的输出非常有用,它将查找与某个模式匹配的所有文件名:</p>
^{pr2}$
<p>由于(从注释中)似乎打开<code>fits</code>文件需要大量的开销,您可能一次只需要打开一个文件。因此,您应该高效地“深度优先”操作,在继续下一个文件之前,用一个文件完成您的业务。在我看来,最易读的方法是将一个文件的所有必要步骤按顺序放入<code>deal_with</code>函数中:</p>
<pre><code>def deal_with(single_filename):
file_handle = fits.open(single_filename)
result = do_whatever_processing(file_handle)
# ...
# if necessary, explicitly close the file here
return result
</code></pre>