воскресенье, 2 февраля 2014 г.

Как я навёл порядок, который давно планировал

Я люблю "World of Warcraft", и играю в него. И, как многие люди, для того, чтобы зафиксировать какие-то достижения или важный/интересный диалог в игре, я делаю скриншоты. Да иногда просто что-то красивое увидел или необычное – почему бы не запечатлеть?

А ещё я люблю порядок. Наводить его я не люблю. Люблю поддерживать. Но для того, чтобы поддерживать, его всё-таки сначала надо навести. Поэтому, наводить порядок периодически приходится. Конечно, жизнь моя напрямую связана с компьютером, и поэтому чаще я навожу порядок именно в этой области. Я говорю про файлы. Файлы – это то, в чём нужно наводить порядок на компьютере.

КДПВ. Порядок

Здесь были два абзаца текста. Больше их нет. Сразу к делу.

Итак, я наводил порядок в скриншотах WoW. Клиент игры не позволяет задавать параметры сохранения скриншотов, его настройки заданы жёстко, и если приходится пользоваться именно штатной функцией создания скриншотов, через какое-то время в подпапке Screenshots папки с игрой скапливается куча файлов с именами, содержащими дату и время, но при этом не упорядочиваемым по имени так, чтобы было отсортировано сразу и по дате.

И в Windows, и в Linux я использую сторонние программы для создания скриншотов, но при этом всё равно у меня была надежда, что когда-нибудь я напишу скрипт, который автоматически поменяет имена файлов так, чтобы было хорошо. Это произошло сегодня.

Теперь я "живу" в Linux, поэтому вместо WSH выбрал другой инструмент для своих нужд: Python 3. Досконального знания языка для моего скрипта не понадобилось. Всё вышло быстрее, чем я мог предположить.

Что было:
файлы в папке скриншотов имели имена вида WoWScrnShot_MMDDYY_hhmmss.jpg, из-за чего файлы созданные позже могли находиться перед более ранними в зависимости от порядкового номера месяца в году.

Мне требовалось:
чтобы файлы приобрели вид WoW_screenshot YYYY-MM-DD hh-mm-ss.jpg для упорядочивания по мере создания независимо от выбранного способа сортировки в каталоге.

Итак, на языке Python 3 файл, который при выполнении в папке с изображениями произведёт необходимые замены кусков имени каждого скриншота, выглядит так:

import os

for CurrentFilename in os.listdir('.'):

    if CurrentFilename[:11] == 'WoWScrnShot':
        DD = CurrentFilename[14:16]
        MM = CurrentFilename[12:14]
        YY = CurrentFilename[16:18]

        Hr = CurrentFilename[19:21]
        Min = CurrentFilename[21:23]
        Sec = CurrentFilename[23:25]

        NewFilename = 'WoW_screenshot ' + '20' + YY + '-' + MM + '-' + DD + \
            ' ' + Hr + '.' + Min + '.' + Sec + '.jpg'

        os.rename(CurrentFilename, NewFilename)
       
        Report = 'Файл "' + CurrentFilename + '" был переименован в "' + \
            NewFilename + '".'
       
        print(Report)

Я не забыл про "жителей Windows", и для тех, кто не имеет установленного в системе Python 3, его устанавливать не придётся: во взятом со странички Python Portable дистрибутиве я удалил лишнее для уменьшения веса, оставив только необходимое для запуска (по крайней мере в Windows XP), положил внутрь свой скрипт и файл Rename.bat для удобного запуска. Получившееся богатство можно взять в архиве по ссылке на моём гуглодиске, распаковать в папку со скриншотами и запустить Rename.bat.

Файлы, начинающиеся на "WoWScrnShot", будут переименованы. О каждом выполненном переименовании должно появиться сообщение.

Если требуется подправить скрипт, (например, вместо "WoW_screenshot" в результурующем файле вы хотите использовать другой текст), откройте файл Rename.py, находящийся в папке Python архива .zip, с помощью любого текстового редактора, внесите желаемые изменения и сохраните файл перед запуском.

Комментариев нет:

Отправить комментарий

Если у вас есть что сказать и/или вы не согласны с изложенным в посте – оставьте комментарий. Регистрации не требуется.

If you think I'm wrong and/or you have to say something – fill free to write comment. No sign up required.