如何将文件夹中的文件复制到多个文件夹中
How can I copy files from a folder into multiple folders
我在源文件夹中有 130 个文件,我想将每个文件复制到单个文件夹 001、002、003 ... 130(所有这 130 个文件夹都位于目标文件夹中)。
这样每个文件夹只包含一个文件。
我想到了这个,但可能有点混乱和多余......而且大部分都不起作用。
import shutil
import os
source = '/Users/JohnCN/photo_database/mugshot_frontal/'
files = os.listdir(source)
for i in files:
for fold in range(1,131):
if fold<10:
destination = "/Users/JohnCN/photo_DBsorted/00%s" %fold
shutil.move(source+i, destination)
elif fold in range(10,100):
destination = "/Users/JohnCN/photo_DBsorted/0%s" %fold
shutil.move(source+i, destination)
else:
destination = "/Users/JohnCN/photo_DBsorted/%s" %fold
shutil.move(source+i, destination)
首先,如果我想复制文件而不是移动,我宁愿使用shutil.copy
。虽然,主要思想并不依赖于它。此外,您不需要 if
语句以及内部循环:
files = os.listdir(source)
for i in range(len(files)):
file = os.path.join(source, files[i])
shutil.copy(file, os.path.join(source, '%03d'%i, files[i])
我会按以下方式进行:
import shutil
import os
source = '/Users/JohnCN/photo_database/mugshot_frontal/'
files = os.listdir(source)
for idx, f in enumerate(files):
destination = '/Users/JohnCN/photo_DBsorted/{d:03d}'.format(d=(idx + 1))
shutil.move(source + f, destination)
那么,它有什么作用?
for idx, f in enumerate(files):
循环时计算文件数,所以你知道文件的索引。要获取目的地,idx 用作目录名称。我假设您知道方法 format
,{d:03d}
简单地说,分配给 d 的值应该是 3 个字符长,该值是一个整数,并用零填充(例如 003)。当然,这段代码假设你没有 1000+ 个文件,在这种情况下,只需增加零的数量即可。例如,您可以计算文件数量的 log10
值以获得您必须添加的零的数量。
我在源文件夹中有 130 个文件,我想将每个文件复制到单个文件夹 001、002、003 ... 130(所有这 130 个文件夹都位于目标文件夹中)。
这样每个文件夹只包含一个文件。 我想到了这个,但可能有点混乱和多余......而且大部分都不起作用。
import shutil
import os
source = '/Users/JohnCN/photo_database/mugshot_frontal/'
files = os.listdir(source)
for i in files:
for fold in range(1,131):
if fold<10:
destination = "/Users/JohnCN/photo_DBsorted/00%s" %fold
shutil.move(source+i, destination)
elif fold in range(10,100):
destination = "/Users/JohnCN/photo_DBsorted/0%s" %fold
shutil.move(source+i, destination)
else:
destination = "/Users/JohnCN/photo_DBsorted/%s" %fold
shutil.move(source+i, destination)
首先,如果我想复制文件而不是移动,我宁愿使用shutil.copy
。虽然,主要思想并不依赖于它。此外,您不需要 if
语句以及内部循环:
files = os.listdir(source)
for i in range(len(files)):
file = os.path.join(source, files[i])
shutil.copy(file, os.path.join(source, '%03d'%i, files[i])
我会按以下方式进行:
import shutil
import os
source = '/Users/JohnCN/photo_database/mugshot_frontal/'
files = os.listdir(source)
for idx, f in enumerate(files):
destination = '/Users/JohnCN/photo_DBsorted/{d:03d}'.format(d=(idx + 1))
shutil.move(source + f, destination)
那么,它有什么作用?
for idx, f in enumerate(files):
循环时计算文件数,所以你知道文件的索引。要获取目的地,idx 用作目录名称。我假设您知道方法 format
,{d:03d}
简单地说,分配给 d 的值应该是 3 个字符长,该值是一个整数,并用零填充(例如 003)。当然,这段代码假设你没有 1000+ 个文件,在这种情况下,只需增加零的数量即可。例如,您可以计算文件数量的 log10
值以获得您必须添加的零的数量。