2009-02-21 37 views
15

Có thể nối thêm các phần tử vào bộ tạo python không?Thêm các phần tử vào máy phát điện trăn

Tôi hiện đang cố gắng tải tất cả hình ảnh từ một tập hợp các thư mục chưa được sắp xếp và viết chúng vào một thư mục mới. Để có được các tập tin, tôi đang sử dụng os.walk() trả về một danh sách các tập tin hình ảnh trong một thư mục duy nhất. Trong khi tôi có thể làm cho một máy phát điện ra khỏi danh sách duy nhất này, tôi không biết làm thế nào để kết hợp tất cả các danh sách này thành một máy phát điện duy nhất. Bất kì sự trợ giúp nào đều được đánh giá cao.

liên quan:

Trả lời

13

này nên làm điều đó, nơi directories là danh sách các thư mục:

import os 
import itertools 

generators = [os.walk(d) for d in directories] 
for root, dirs, files in itertools.chain(*generators): 
    print root, dirs, files 
+5

'chain.from_iterable (imap (os.walk, thư mục))' – jfs

4
def files_gen(topdir='.'): 
    for root, dirs, files in os.walk(topdir): 
     # ... do some stuff with files 
     for f in files: 
      yield os.path.join(root, f) 
     # ... do other stuff 

for f in files_gen(): 
    print f 
-1

Như thế này.

def threeGens(i, j, k): 
    for x in range(i): 
     yield x 
    for x in range(j): 
     yield x 
    for x in range(k): 
     yield x 

Hoạt động tốt.

+0

'itertools.chain (phạm vi (i), phạm vi (j), dải ô (k)) ' – jfs

+0

@JF Sebastian: Không phải khi phạm vi là os.walk (...). –

16

Bạn đang tìm kiếm itertools.chain. Nó sẽ kết hợp nhiều iterables vào một duy nhất, như thế này:

>>> for i in itertools.chain([1,2,3], [4,5,6]): 
... print i 
... 
1 
2 
3 
4 
5 
6 
+0

Làm thế nào để bạn sử dụng 'chuỗi' trong ngữ cảnh của' os.walk'? – jfs

+0

@ J.F.Sebastian: 'chuỗi (os.walk (". "), Other_generator)'. –

Các vấn đề liên quan