我有一个包含1092个文件的文件夹。我需要将这些文件以10批为单位移至新目录(每个新文件夹每个文件只有10个文件,因此最多110个文件夹)。
我尝试了这段代码,现在已经创建了文件夹,但是找不到任何原始文件(???)。它们既不在原始文件夹中也不在新创建的文件夹中...
path = "/home/user/Documents/MSc/Imagens/Dataset"
paths = []
for root, dirs, file in os.walk(path):
for name in file:
paths.append(os.path.join(root,name))
start = 0
end = 10
while end <= 1100:
dest = str(os.mkdir("Dataset_" + str(start) + "_" + str(end)))
for i in paths[start:end]:
shutil.move(i, dest)
start += 10
end += 10
有什么想法吗?
答案 0 :(得分:2)
使用move
命令,您将所有10个文件都移到一个文件夹中-但由于文件名丢失,不能移入该文件夹。而dest
为空,因为os.mkdir()
不返回任何内容。
您需要将文件名附加到dest
:
dataset_dirname = "Dataset_" + str(start) + "_" + str(end)
os.mkdir(dataset_dirname)
dataset_fullpath = os.path.join(path, dataset_dirname)
for i in paths[start:end]:
# append filename to dataset_fullpath and move the file
shutil.move(i, os.path.join(dataset_fullpath , os.path.basename(i)))