Ken*_*nyC 3 python directory move shutil
我有一个包含数千个文件的目录。我希望能够在较大的Director内创建子目录,并将恰好150个文件(按扩展名过滤)移动到每个新创建的目录中。我希望获得一些指导以使我前进。这是我开始的琐事:
wd = os.chdir(r'foobar')
allgzs=[]
for file in os.listdir(wd):
if file.endswith('asc.gz'):
allgzs.append(file)
for gz in allgzs:
# For every 150 .gz files:
# Create directory -- os.mkdir?
# Move files into directory -- shutil.move?
Run Code Online (Sandbox Code Playgroud)
我想出了一个grouper函数,可以在运行以下命令时产生较长的序列n:
import itertools
def grouper(S, n):
iterator = iter(S)
while True:
items = list(itertools.islice(iterator, n))
if len(items) == 0:
break
yield items
Run Code Online (Sandbox Code Playgroud)
从那里,您可以非常简洁地执行您想要的操作:
import glob, os, shutil
fnames = sorted(glob.glob('*asc.gz'))
for i, fnames in enumerate(grouper(fnames, 150)):
dirname = 'batch%d' % i
os.mkdir(dirname)
for fname in fnames:
shutil.move(fname, dirname)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2392 次 |
| 最近记录: |