如何读取文件夹中的两个连续文件

时间:2017-04-21 05:59:43

标签: python-2.7 python-3.x

我有一个图像文件夹,我想继续处理它们(运动历史图像)MHI。 所以我不知道如何在 FOR LOOP 中连续拍摄2张图像来处理它们。

任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

如果您想以files = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg'] for img1, img2 in zip(files[::2], files[1::2]): #do something 方式工作,请使用:

1-2

如果您希望以2-3for img1, img2 in zip(files, files[1:]): #do something ...:

的方式进行组合
plt.show()

答案 1 :(得分:0)

以下代码将打开前2个文件,然后是第二对新文件,依此类推

files = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg']

counter = 0
while counter < len(files):
    file1 = open(files[counter], 'r')
    file2 = open(files[counter + 1], 'r')
    counter += 2

for循环不起作用的原因是2.jpg是第一组文件的一部分,在for循环中没有指定步骤,2.jpg是第二组的第一个文件,这是不正确的

所以要在for循环中执行此操作,您需要这样的内容:

for i in range(0, len(files), 2):
    file1 = open(files[i], 'r')
    file2 = open(files[i + 1], 'r')

这个当然假定列表文件是正确排序的,因为数字字符串的排序方式可以不同,例如:

files = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg', '10.jpg']
files = sorted(files)

将产生:

['1.jpg', '10.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg']
您可以看到<{1>} 10.jpg跟随1.jpg 一个如何做到这一点的例子很好地&#39;这里:

import re

def sorted_nicely(l, reverse=False): 
    """ Sort the given iterable in the way that humans expect.""" 
    convert = lambda text: int(text) if text.isdigit() else text 
    alphanum_key = lambda key: [convert(c) for c in re.split('([0-9]+)', key)] 
    return sorted(l, key = alphanum_key, reverse=reverse)

(我很乐意在这里给予赞誉,因为我可能会在某处从互联网上借用这段代码,但不记得在哪里)