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

2024-04-24 23:16:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Tags: forusernamegreenblueusersseqfileimages
1条回答
网友
1楼 · 发布于 2024-04-24 23:16:09

您需要在打印第一个文件后添加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

相关问题 更多 >