问题描述
我正在尝试制作一个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()
创建路径。