首页 > 解决方案 > 用于按类型排序和移动文件的 Python 代码

问题描述

我的代码可以正常工作以实现其目标,但是有一个小错误,我无法超越。这是关于python代码中的“makedir”命令。

我的下载部分有很多文件。所以考虑根据文件类型对它们进行排序以组织文件夹。该项目包括 -

  1. 根据文件类型创建用于存储不同文件类型的目录。

  2. 根据文件类型识别文件并将其移动到相应目录。我返回了下面提到的代码。

import os, glob, shutil

os.chdir('/home/something/Downloads')
src_dir = os.path.join('/home/something/Downloads')
try:
    os.makedirs('/home/something/Downloads/excel')
    os.makedirs('/home/something/Downloads/image')
    os.makedirs('/home/something/Downloads/pdf')
    os.makedirs('/home/something/Downloads/word')
    os.makedirs('/home/something/Downloads/python')
    os.makedirs('/home/something/Downloads/text')
    os.makedirs('/home/something/Downloads/gimp')
    os.makedirs('/home/something/Downloads/video')
    os.makedirs('/home/something/Downloads/presentation')
    os.makedirs('/home/something/Downloads/zip')

except FileExistsError:
    pass

pdfDir = (src_dir + '/pdf')
txtDir = src_dir + '/text'
pyDir = src_dir + '/python'
docDir = src_dir + '/word'
gimpDir = src_dir + '/gimp'
imgDir = src_dir + '/image'
avDir = src_dir + '/video'
pptxDir = src_dir + '/presentation'
zipDir = src_dir + '/zip'
excelDir = src_dir + '/excel'

pdfFiles = glob.glob(src_dir + '/*.pdf')
txtFiles= glob.glob(src_dir + '/*.txt')
pyFiles = glob.glob(src_dir + '/*.py')
docFiles = (glob.glob(src_dir + '/*.docx') + glob.glob(src_dir + '/*.docs') + glob.glob(src_dir + '/*doc') + glob.glob(src_dir + '/*.odt') + glob.glob(src_dir + '/*.DOC'))
gimpFiles = glob.glob(src_dir + '/*.svg') + glob.glob(src_dir + '/*.xcf')
imgFiles = glob.glob(src_dir + '/*.img') + glob.glob(src_dir + '/*.png') + (glob.glob(src_dir + '/*.jpg') + glob.glob(src_dir + '/*.jpeg')+ glob.glob(src_dir +'/*.JPG'))
avFiles = glob.glob(src_dir + '/*.mp4')
pptxFiles = glob.glob(src_dir + '/*.pptx')
zipFiles = glob.glob(src_dir + '/*.zip')
excelFiles = glob.glob(src_dir + '/*.xlxs') + glob.glob(src_dir + '/*.xlsx') + glob.glob(src_dir + '/*.ods')

for files in pdfFiles:
    shutil.copy(files, pdfDir)
for files in pyFiles:
    shutil.copy(files, pyDir)
for files in txtFiles:
    shutil.copy(files, txtDir)
for files in gimpFiles:
    shutil.copy(files, gimpDir)
for files in docFiles:
    shutil.copy(files, docDir)
for files in imgFiles:
    shutil.copy(files, imgDir)
for files in avFiles:
    shutil.copy(files, avDir)
for files in pptxFiles:
    shutil.copy(files, pptxDir)
for files in zipFiles:
    shutil.copy(files, zipDir)
for files in excelFiles:
    shutil.copy(files, excelDir) 

它工作得很好,除了一个困难外,它的目的是达到目的。如果“makedirs”命令遇到目录“Downloads”中已经存在的文件名,它会通过该命令并且不会创建新目录。例如,如果文件名“image”已经存在于“Downloads”目录中,则“makedirs”命令无法创建具有相同名称的新目录,因此图像文件类型不会相应地排序。

我不确定如何解决此错误,因为没有“directoryExistsError”作为“FileExistsError”!

请指导。

标签: pythonpython-3.xfileshutil

解决方案


您不能同时拥有同名的文件和目录。因此,您必须在创建目录之前重命名或移动文件。


推荐阅读