以循环模式将文件写入目录

时间:2014-06-27 13:30:50

标签: python

我正在寻找Python中的解决方案,以循环方式将生成的文件写入一组目标目录,以便文件均匀分布。

所以如果有5个目标目录:D1,D2,D3,D4和D5

和生成的文件的常量流(F1 .... Fn),目录将按如下方式写入: -

D1: F1, F6, F11 ... etc
D2: F2, F7, F12 ... etc
D3: F3, F8, F13 ... etc
D4: F4, F9, F14 ... etc
D5: F5, F10, F15 ... etc

理想情况下,可能有一个python lib允许这个......

由于

2 个答案:

答案 0 :(得分:3)

使用itertools.cycle获取下一个文件的下一个目录:

it = itertools.cycle( ['D1', 'D2', 'D3'] )

print next(it)
print next(it)
print next(it)
print next(it)
print next(it)
print next(it)

结果

D1
D2
D3
D1
D2
D3

it = itertools.cycle( ['D1', 'D2', 'D3'] )

for x in ['F1', 'F2', 'F3', 'F4' , 'F5', 'F6']:                      
    print x, 'write in', next(it)

结果

F1 write in D1
F2 write in D2
F3 write in D3
F4 write in D1
F5 write in D2
F6 write in D3

凯文说

编辑

dirs = ['D1', 'D2', 'D3']
files = ['F1', 'F2', 'F3', 'F4' , 'F5', 'F6']

for f,d in zip(files, itertools.cycle(dirs)):
   print f, 'write in', d

结果

F1 write in D1
F2 write in D2
F3 write in D3
F4 write in D1
F5 write in D2
F6 write in D3

答案 1 :(得分:1)

您只需要一种方法来引用当前文件的相应目录。因为你必须索引两个不等长的列表,所以zip在这里并不合适(这很可惜),但你可以像这样实现它:

files = ...
directories = ...

for i in range(len(files)):
    write_file(files[i], directories[i % len(directories)])

您可以使用furas的cycle建议来改进这一点,这可以使用zip:

from itertools import cycle

for f, d in zip(files, cycle(directories)):
    write_file(f, d)