Python—通过在目录上循环打开FabIO模块中的图像
我正试图用Python处理.cbf(晶体二进制格式,链接见下文)文件。我需要一种循环当前目录中所有文件的方法 示例1Python—通过在目录上循环打开FabIO模块中的图像,python,python-2.7,loops,for-loop,Python,Python 2.7,Loops,For Loop,我正试图用Python处理.cbf(晶体二进制格式,链接见下文)文件。我需要一种循环当前目录中所有文件的方法 示例1 # Reading in first file in FabIO. dat = raw_input('Please Input Required Filename: ') # Define the required filename as a string. # Example Input: file.cbf import fabio
# Reading in first file in FabIO.
dat = raw_input('Please Input Required Filename: ') # Define the required filename as a string.
# Example Input: file.cbf
import fabio # Import FabIO module for Python.
img_0001 = fabio.open(dat) # Open image from defined filename.
这段代码设计用于打开和显示文件,效果非常好。FabIO有一种打开下一个可用文件的方法,在这种情况下,该文件的格式为:
示例2
img_0002 = img_0001.next()
因为我已经在示例1中定义了img_0001,所以该代码可以工作
如何循环当前目录中的所有文件,而不需要对每个文件执行示例2中的命令?如果有100个文件,它的形式会是:
示例3
for i in range (1, 99)
img_'i+1' = img_000'i'.next()
我如何做这个循环,同时还要考虑前导零
任何帮助都将不胜感激,谢谢
相关信息
CBF文件:
FabIO模块:
如果您正在寻找执行动态生成代码的方法,请使用该语句。因此,您的
for
循环可以重写如下:
for i in range (1, 99)
exec ("img_%03d = img_%03d.next()" % (i+1, i))
但是,您可以通过使用来简化表达式的lhs(左侧),而IMHO将图像存储在列表中将简化它们以后的访问:
imgs = [img_000]
for i in range (1, 99)
imgs.append(img_000.getframe(i))
谢谢,这看起来正是我所需要的。刚刚实现了这一点,它的工作完全符合预期。刚刚将%03d更改为%04d,以便我可以处理更大的文件集。我稍后也会让IMHO仓库试一试。再次感谢。如果你认为这个答案解决了你的问题,请考虑一下。顺便说一句,依我的拙见,这不过是……的一个初步说法;)