我正在尝试使用Python处理.cbf(Crystallographic Binary Format,请参阅下面的链接)文件。我需要一种循环遍历当前目录中所有文件的方法。
示例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 # 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文件: http://www.esrf.eu/computing/Forum/imgCIF/cbf_definition.html
答案 0 :(得分:0)
如果您正在寻找一种执行动态生成代码的方法,请使用exec语句。因此,您的for
循环可以重写为:
for i in range (1, 99)
exec ("img_%03d = img_%03d.next()" % (i+1, i))
但是,您可以使用fabimage.getframe
简化表达式的lhs(左侧),并且将图像存储在列表中的恕我直言将简化其后续访问:
imgs = [img_000]
for i in range (1, 99)
imgs.append(img_000.getframe(i))