【问题标题】:Move files from a single directory to three separate folders, consecutively - Python将文件从单个目录连续移动到三个单独的文件夹 - Python
【发布时间】:2018-01-23 13:06:39
【问题描述】:

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)

【问题讨论】:

    标签: python automation shutil


    【解决方案1】:

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

    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中测试

    【讨论】:

    • 谢谢,没想到。干杯!
    • 嗨 Rakesh:您能否解释一下如何连续重命名每个文件夹中的每个文件?因此,不仅仅是将文件夹分开,因为一旦它们到达目标文件夹就会按顺序重命名。
    猜你喜欢
    • 2022-07-17
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    相关资源
    最近更新 更多