"A subdirectory of file txt already exists." 尝试对文件进行排序时出错,即使没有文件名 "txt"

"A subdirectory of file txt already exists." error when trying to sort files, even though there are no files name "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")

您似乎是在工作目录中创建 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() 来创建路径。