2017-07-18 37 views
1

我有一個列表與幾串返回第一項/迭代的for循環

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

我想使用這個列表作爲搜索條件來查找圖像序列與我的服務器上的名稱相符。這些圖像序列位於服務器上的所有地方。

根目錄從中我將開始我的搜索是:

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

我試圖創建一個for循環,搜索由myList中ROOTPATH變量的數量,但我發現很難將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 
+1

只要看看你的例子,你可以在'print'語句之後添加一個'break'語句,這個語句將打破內部循環(因此繼續外部循環)。但是,如果您有多個匹配相同名稱的圖像序列,則它們也會被跳過。所以這真的取決於你的具體設置。 –

回答

0

打印第一個文件和波紋管後需要添加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