将文件从单个目录移动到三个单独的文件夹,连续 - Python

时间:2018-01-23 13:06:40

标签: python automation shutil

Python用户在这里获得os / shutil库的基础知识。

我正在尝试将单个目录文件夹(Test)中的文件连续移动到三个单独的文件夹(01-Folder,02-Folder和03-Folder)。这意味着目录中的第一个文件放在01-Folder中,第二个文件放在02-Folder中,第三个文件放在03-Folder中。从这里开始(无论是否在测试中有5或1000个文件),该过程重复进行,其中4将返回01-Folder,5将进入02-Folder,6进入03,7进入01,8进入02 ,9成03 - 依此类推。

这三个文件夹可以放在原始目录中,也可以放在外面。这里的关键只是顺序 - 它们需要在某种有序的循环中拉动。

我遇到的问题是文件选择一旦进入目录。我将如何遍历每个文件,并将它们发送到各自的文件夹,同时保持它们最初的顺序?

import os
import shutil

# Original folder
original = ('C:\\Users\\Vision3\\Desktop\\Test') 

# Destination folders
path1 = ('C:\\Users\\Vision3\\Desktop\\01-Folder')
path2 = ('C:\\Users\\Vision3\\Desktop\\02-Folder')
path3 = ('C:\\Users\\Vision3\\Desktop\\03-Folder')

# Traverse original
for root, subdirs, files, in os.walk(original):
    for file in files:
        # Select the first three files? Grey area here ...
        for x in range(0,2):
            # Move these first three files to 01-Folder?
            shutil.move(x, path1)

1 个答案:

答案 0 :(得分:0)

您可以设置字典的目标路径,然后使用此逻辑。

import os
import shutil  

path = "C:\\Users\\USERNAME\\Desktop\\A\\"
path1 = 'C:\\Users\\USERNAME\\Desktop\\01-Folder'
path2 = 'C:\\Users\\USERNAME\\Desktop\\02-Folder'
path3 = 'C:\\Users\\USERNAME\\Desktop\\03-Folder'

d = {1: path1, 2: path2, 3: path3}
c = 1
for root, dirnames, filenames in os.walk(path):
    for filename in filenames:
        filePathVal =  os.path.join(root, filename)
        shutil.move(filePathVal, d[c])
        c += 1
        if c > 3:
            c = 1

注意: 在python2.7中测试