如何在Python中移动批处理文件?

时间:2019-02-27 21:29:59

标签: python python-3.x shutil

我有一个包含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

有什么想法吗?

1 个答案:

答案 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)))