Python 返回for循环中的第一项/迭代

Python 返回for循环中的第一项/迭代,python,Python,我有一个有几个字符串的列表 myList = ['someFileName_red', 'someFileName_blue_v006', 'someFileName_green_v004'] 我想使用此列表作为搜索条件,在我的服务器上查找具有匹配名称的图像序列。这些图像序列位于服务器上的所有位置 我将从中开始搜索的根目录是: rootPath = r'C:\Users\userName\Desktop\Seq' 我试图创建一个for循环,通过myList和rootPath变量搜索卷,但发现

我有一个有几个字符串的列表

myList = ['someFileName_red', 'someFileName_blue_v006', 'someFileName_green_v004']
我想使用此列表作为搜索条件,在我的服务器上查找具有匹配名称的图像序列。这些图像序列位于服务器上的所有位置

我将从中开始搜索的根目录是:

rootPath = r'C:\Users\userName\Desktop\Seq'
我试图创建一个for循环,通过myListrootPath变量搜索卷,但发现很难将for循环的结果作为循环中的第一项返回。下面是我尝试做的一个示例:

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)
返回:

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
我想得到的是图像序列的第一帧:

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

打印第一个文件后,您需要添加一个
中断
,如下所示:

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

打印第一个文件后,您需要添加一个
中断
,如下所示:

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

以您的示例为例,您可以在
print
语句之后添加一个
break
语句,该语句将中断内部循环(从而继续外部循环)。但是,如果有多个图像序列与相同的名称匹配,它们也将被跳过。因此,这实际上取决于您的具体设置。以您的示例为例,您可以在
print
语句之后添加一个
break
语句,该语句将中断内部循环(从而继续外部循环)。但是,如果有多个图像序列与相同的名称匹配,它们也将被跳过。因此,这实际上取决于您的具体设置。