【问题标题】:how to move files in different sub-directories?如何移动不同子目录中的文件?
【发布时间】:2022-01-13 19:22:16
【问题描述】:

我有一个包含不同扩展名的文件的目录,我必须将这些文件移动到“文件目录”内的文件夹中(创建它们),我写了但我需要帮助(第一个项目请温柔)

import os
import shutil

os.makedirs("C:\\FileOrganizer\\FileOrganizer\\Files\\Images")
os.makedirs("C:\\FileOrganizer\\FileOrganizer\\Files\\Text")
os.makedirs("C:\\FileOrganizer\\FileOrganizer\\Files\\Mp3")

src_fldr = "C:\\FileOrganizer\\FileOrganizer\\Files"
fldr_img ="C:\\FileOrganizer\\FileOrganizer\\Files\\Images"
fldr_txt = "C:\\FileOrganizer\\FileOrganizer\\Files\\Text"
fldr_mp3 = "C:\\FileOrganizer\\FileOrganizer\\Files\\Mp3"

for file in os.listdir(src_fldr): 
    filename = os.fsdecode(file)
    if filename.endswith(".txt", ".otd"):
        shutil.move(src_fldr, fldr_txt)
    elif filename.endswith(".jpeg", ".jpg", ".png"):
        shutil.move(src_fldr, fldr_img)
    elif filename.endswith(".mp3"):
        shutil.move(src_fldr, fldr_mp3)
    else: 
        pass

【问题讨论】:

    标签: python file for-loop directory shutil


    【解决方案1】:

    您应该将源文件而不是源文件夹移动到目标文件夹中

    for file in os.listdir(src_fldr): 
        filename = os.fsdecode(file) # remove me
        if filename.endswith(".txt", ".otd"):
            shutil.move(file, fldr_txt)
        elif filename.endswith(".jpeg", ".jpg", ".png"):
            shutil.move(file, fldr_img)
        elif filename.endswith(".mp3"):
            shutil.move(file, fldr_mp3)
        else: 
            pass
    

    另外,我认为您应该删除整行 os.fsdecode 并直接更改使用 file

    if file.endswith(".txt", ".otd"):
    

    【讨论】:

    • 并编写类似if file.endswith(...) ...的代码?
    • 是的,因为listdir 已经返回文件名列表
    猜你喜欢
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多