Новый год уже на носу. С каким бы настроением мы не подходили к его финалу, все равно хочется похулиганить, внести некоторое разнообразие в серые одинаковые будни.
Пускай, я снова ухожу от основной темы, не пишу сткрипт генерации какой нибудь поздравительной открытки, а собственно говоря, почему бы нет. Только представьте: нажимаешь run и вот оно – новогодние чудо – поздравление с новым годом. Интересная затея? Мне нравится. Но подходить мы к теме будем творчески. Стопудово Вас друг когда-нибудь да просил подарим ему какую-нибудь из Ваших сцен, выполненных в Blender. И вот, наконец, Вы решились это сделать, но просто файл дарить скучно.
Подарим – скрипт. Да один лишь скрипт, который нужно запускать.
Посмотрим, как это организовать, а, заодно и убедимся, что ничего нет не возможного.
Нам понадобятся два скрипта. Один, чтобы упаковать Вашу сцену в txt-файл (да я не оговорился – именно, в блокнот :р). и скрипт, который Вы подарите другу, который уже будет в себе содержать Вашу сцену. По шпионски звучит? Да мне нравятся такие заморочки. На деле это все выглядит очень просто – у меня в папке есть файл 01.blend, именно его я и собираюсь подарить другу. Весит он 1,59 МБ (приношу прощение за сленг, но уже привык так говорить). В этой папке я создаю файл inbox.py с кодом.
import StringIO
import gzip
import base64
my_file = '01.blend'
zbuf = StringIO.StringIO()
zfile = gzip.GzipFile(mode='wb', fileobj=zbuf)
zfile.write(open(my_file,'rb').read())
zfile.close()
open('tmp.txt','w').write(base64.encodestring(zbuf.getvalue()))
Получили текстовый файл tmp.txt, который весит 543 КБ, но он и хорошенько сжимается, если его попросить об этом.
Нас же интересует содержание этого файла, которое мы прочитаем в переменную, и дальше уже с переменой будем работать. Чтобы не загружать объемом скрипт.
import sys
import os
import base64
import StringIO
import gzip
import subprocess
scn =open('tmp.txt','r').read()
scn = base64.decodestring(scn)
zbuf = StringIO.StringIO(scn)
zfile = gzip.GzipFile(mode='rb',fileobj=zbuf)
file_src = sys.argv[0]
file_name = file_src.split('\\')[-1].split('.')[0]
open(file_name+'.blend','wb').write(zfile.read())
zfile.close()
subprocess.Popen(file_name+'.blend', shell=True)
Я нарочно даю этот скрипт без комментариев – здесь комментировать нечего, я же надеюсь, со строками работать Вы умеете, а вот финальная строка интересная кода заслуживает рассмотрения, но в том плане, что надо знать, что именно она запускает распакованный файл в Blnder’е.
Вот такой легкий скрипт, а сколько всего полезного он может сделать.
Одно из его применений – запуск тех документов, которые сегодня должны быть сделаны.
Удачного Вам нового года.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий