Python-код для сортировки и перемещения файлов по типам - PullRequest
0 голосов
/ 30 июня 2019

Мой код работает нормально, чтобы служить своей цели, но есть небольшая ошибка, которую я не могу преодолеть. Речь идет о команде "makedir" в коде Python.

У меня много файлов в разделе загрузок. Поэтому подумал о сортировке их по типам файлов для организации папки. Проект включает в себя -

  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» встречает имя файла, уже существующее в каталоге «Загрузки», она пропускает команду и не создает новый каталог. Например, если имя файла «изображение» уже существует в каталоге «Загрузки», то команде «makedirs» не удается создать новый каталог с тем же именем, и поэтому типы файлов изображений не сортируются соответствующим образом.

Я не уверен, как устранить эту ошибку, так как нет "directoryExistsError" как "FileExistsError"!

Пожалуйста, руководство.

Ответы [ 2 ]

1 голос
/ 01 июля 2019

Невозможно создать файл и папку с одинаковым именем в одном каталоге.Операционная система не разрешает этого, поэтому это невозможно и для Python.

1 голос
/ 01 июля 2019

Вы не можете иметь файл и каталог с одинаковыми именами.Поэтому вы должны переименовать или переместить файл, прежде чем создавать каталог.

...