dimzon 05.03.2011 05:36

СкриптыСкрипт автоматического создания папок под файлы

Данный скрипт решает достаточно специфичную задачу. Я у себя в квартире активно использую сетевые медиаплееры класса ASUS O!Play и его собратьев от IconBit. Эти плееры по NFS монтируют шару, расположенную на NAS (lubuntu 10.10), который стоит себе в кладовке. К сожалению, интерфейс этих плееров очень примитивен, а коллекция у меня большая. Посему для удобства навигации я при помощи скриптов создаю специальную структуру каталогов (спасибо символическим ссылкам).

Скрипт, который я хочу вам представить, является подручным средством для упорядочивания каталога фильмов. Перидически из общей свалки скачанных файлов те, которые заслуживают места в коллекции, перемещаются в папку "to_sort". Следующим шагом является создать папку для каждого отдельного файлика (за исключением сериалов), переместить файл в папку и дать папке осмысленное название. Почему я выбрал папки как "единицу хранения". Причины следующие:
Со временем файлов может стать больше одного - например субтитры, обложки дисков, дополнительные аудиодороги...
При сортировке файлы идут после каталогов (а по другому плееры сортировать не умеют)
У плееров есть такая неприятная фича - если чуть дольше задержаться на файле они начинают читать его заголовок (пока не закончит дальше не сдвинется), при промотке больших списков доставляет...


Итого данный скрипт в папке to_sort для каждого видео-файлика создает одноименную папку и перемещает в нее файлик, остается их переименовать и раскидать по хранилищу...

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env python 
# -*- coding: utf-8 -*-

import os, re

targetFolder = u"/nas/010_INCOME/00-to_sort"


ext = re.compile(r"^.+\.(?:avi|mov|mp4|mkv|wmv|asf|ts|m2ts|mpg|mpeg)$",re.IGNORECASE + re.UNICODE)

print 'Processing ' + targetFolder

for fileName in os.listdir(targetFolder):
filePath = os.path.join( targetFolder, fileName )
if os.path.isfile( filePath ):
if ext.match( fileName ):
dirPath = os.path.join( targetFolder, (os.path.splitext( fileName )<0>).strip() )
if not os.path.exists( dirPath ):
os.mkdir( dirPath )
os.rename( filePath, os.path.join( dirPath, fileName ) )

print 'Done!'



Тэги: python
+ 3 -
Похожие Поделиться

uscr 05.03.2011 16:56 #
Я бы вынес регулярку и путь в константы в шапке скрипта. Так приятнее менять его под себя будет.