首页 > 解决方案 > “文件 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")

标签: pythonshutil

解决方案


Try the following:

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() is a safer way to construct paths. As mentioned in my comment I would use the os.makedirs() to create paths.


推荐阅读