";文件txt的子目录已经存在"尝试对文件进行排序时出错,即使没有文件名"";t



我正在尝试制作一个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")

尝试以下操作:

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()来创建路径。

看起来您是在工作目录中创建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")

相关内容

最新更新