“文件txt的子目录已存在”尝试对文件排序时出错,即使没有文件名“ txt”

问题描述

我正在尝试制作一个python脚本,将具有特定扩展名的所有文件移动到各自的文件夹中,这些文件夹均以扩展名命名,例如TXT。但是,在运行代码时,它会出现错误文件txt的子目录已存在”。但是在查找了需要排序的文件文件夹之后,甚至还没有创建具有该名称文件

import os
import shutil

try:
    path = "/Users/name/Desktop/test2/"
    for (path,dirs,files) in os.walk(path):
        for file in files:
            extension=file.split('.')[1]
            print(extension)
            if os.path.exists(r"/Users/name/Desktop/test2/" +extension):
                if file.endswith(extension):
                    shutil.move(file,"/Users/name/Desktop/test2/" +extension)
            else:
                os.system('mkdir ' + extension)
                shutil.move(file,"/Users/name/Desktop/test2/" +extension)
except:
    print("done")

解决方法

似乎您是在工作目录中而不是在path变量引用的目录中创建txt文件。每次引用文件名或目录名称时,都需要添加路径。

import os
import shutil

try:
    path = "/Users/name/Desktop/test2/"
    for (path,dirs,files) in os.walk(path):
        for file in files:
            extension=file.split('.')[1]
            print(extension)
            if os.path.exists(path +extension):
                print('not exist')
                if file.endswith(extension):
                    print(file)
                    shutil.move(path + file,path +extension)
            else:
                print('exists')
                print(file)

                os.system('mkdir ' + path + extension)
                shutil.move(path + file,path +extension)
except:
    print("done")
,

尝试以下操作:

import os
import shutil

try:
    root = '/Users/name/Desktop/test2/'
    for path,_,files in os.walk(root):
        for file in files:
            extension = file.split('.')[1]
            path_ext = os.path.join(root,extension)
            os.makedirs(path_ext,exist_ok=True)
            path_file = os.path.join(path,file)
            shutil.move(path_file,path_ext)
except:
    print('done')

os.path.join()是一种构造路径的安全方法。如我的评论所述,我将使用os.makedirs()创建路径。