简体   繁体   English

在for循环中返回第一个项目/迭代

[英]return first item / iteration in a for loop

I have a list with several strings 我有几个字符串的清单

myList = ['someFileName_red', 'someFileName_blue_v006', 'someFileName_green_v004']

I want to use this list as a search criteria to find image sequences with matching names on my server. 我想将此列表用作搜索条件,以在服务器上查找具有匹配名称的图像序列。 These image sequences are located in all over the place on the server. 这些图像序列位于服务器上的所有位置。

The root directory from which I will start my search is: 我将从其开始搜索的根目录是:

rootPath = r'C:\Users\userName\Desktop\Seq'

I'm trying to create a for loop that searches the volume by the myList and rootPath variables,but am finding it difficult to return the result of the for loop as the first item in the loop. 我试图创建一个for循环,搜索由myList中ROOTPATH变量体积,但我发现很难在循环中的第一项返回的结果为循环。 Here's and example of what I'm trying to do: 这是我要执行的操作的示例:

for root, dirs, files in os.walk(rootPath):
    for x in shotList:
        for file in files:
            if file.startswith(x):
                if file.endswith('.exr'):
                    print os.path.join(root,file)

Which returns: 哪个返回:

C:\Users\userName\Desktop\Seq\shot\images\someFileName_red.0101.exr
C:\Users\userName\Desktop\Seq\shot\images\someFileName_red.0102.exr
C:\Users\userName\Desktop\Seq\shot\images\someFileName_red.0103.exr
C:\Users\userName\Desktop\Seq\shot\images\someFileName_red.0104.exr
C:\Users\userName\Desktop\Seq\shot\images\someFileName_red.0105.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_blue\V006\Images\someFileName_blue_v006.0101.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_blue\V006\Images\someFileName_blue_v006.0102.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_blue\V006\Images\someFileName_blue_v006.0103.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_blue\V006\Images\someFileName_blue_v006.0104.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_blue\V006\Images\someFileName_blue_v006.0105.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_blue\V006\Images\someFileName_blue_v006.0106.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_blue\V006\Images\someFileName_blue_v006.0107.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_green\V004\Images\someFileName_green_v004.0101.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_green\V004\Images\someFileName_green_v004.0102.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_green\V004\Images\someFileName_green_v004.0103.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_green\V004\Images\someFileName_green_v004.0104.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_green\V004\Images\someFileName_green_v004.0105.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_green\V004\Images\someFileName_green_v004.0106.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_green\V004\Images\someFileName_green_v004.0107.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_green\V004\Images\someFileName_green_v004.0108.exr

What I want to get back is the first frame of the image sequences: 我想得到的是图像序列的第一帧:

C:\Users\userName\Desktop\Seq\shot\images\someFileName_red.0101.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_blue\V006\Images\someFileName_blue_v006.0101.exr
C:\Users\userName\Desktop\Seq\shot\someFileName_green\V004\Images\someFileName_green_v004.0101.exr

You need to add a break after printing the first file and bellow: 在打印第一个文件后,您需要添加一个break并在下面显示:

for root, dirs, files in os.walk(rootPath):
    for x in shotList:
        for file in files:
            if file.startswith(x) and file.endswith('.exr'):
                print os.path.join(root,file)
                break

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM