Сегодня передо мной встала задача производить бекап MySQL баз в облако, на Amazon S3, да ещё и с ротацией. Решений на этот я нашёл достаточно много, но все они были либо слишком громоздкими для данной задачи, либо чего то не умели (практически никто не умеет делать ротацию из коробки).

Читать дальше

Недавно передо мной встала задача провести опрос клиентов Hosting4Django. Разместить опрос в социальных сетях не вариант, т.к. большинство клиентов отсутствуют среди подписчиков группы. Разместить новость на сайте? Хорошая идея, но далеко не все просматривают этот раздел. Немного поразмыслив я остановился на электронной почте. Но как сделать опрос, что будет забирать минимум времени клиентов и при этом сохранить эффективность?

Читать дальше
Vkontakte
Меня давно беспокоила мысль, что в альбомах Vkontakte есть несколько фото, локальных копий которых у меня нет. Перебирать все альбомы и фото занятие, конечно, полезное, но очень скучное. По этому я решил как то автоматизировать этот процесс.
Читать дальше

Строго не судите. Просто родственник попросил сделать за ничего=) Имеются конечно косяки, а в целом работает


#!/usr/bin/env python
# -*- coding: utf-8 -*-
##########################################################################################################
'''
by duke565
Скрипт для сортировки изображений. Собирает файлы из папок и подпапок и разбрасывает их
   по папкам указывая на них дату создания'''
##########################################################################################################  
import os
from shutil import move
import time
##########################################################################################################
dirname = '/home/duke565/splav_2/' # основаная директория
try:
    newdir = '/home/duke565/splavS/' # куда сложить
    OrigNewDir = newdir
except:
    newdir = dirname
     
def image_sort(dirname, newdir, recur= 0):
    if not recur:print 'sorting started ...'
    else: print 'sorting started in %s...'%dirname
    if not newdir: newdir = dirname
 
    imagelist = []
 
    if os.path.isdir(dirname):   #если это папка то
            for x in os.listdir(dirname):
                absx = dirname+os.sep+x # absx - путь  до файла
                if os.path.isfile(absx):
                    imagelist.append(absx) # если это файл, то записывает путь в лист
                else:
                    image_sort(absx, newdir+os.sep+x, recur=1) # 
            for name in imagelist:
                    try:
                        file_date = time.localtime(os.stat(name).st_mtime)
                    except EnvironmentError, error:
                        print 'seems error: %s with '%error, name, '/n'
                        continue
                    
                    imdir = '%s--%02d--%02d'%(file_date.tm_year,file_date.tm_mon,file_date.tm_mday)
                    imdir = os.path.join(OrigNewDir,imdir)
                    
                    if os.path.split(dirname)[-1] == os.path.split(imdir)[-1]:
                        continue
                    elif not os.path.exists(imdir):
                        print 'making dir %s'%imdir
                        os.makedirs(imdir)
                    
                   
                    head,tail = os.path.split(name)    # split orig path
                    replica = os.path.join(imdir,tail) #path file in new folder 
                    if  os.path.isfile(replica): # if file true then rename old  
                            to_ext = '.JPG'
                            if  to_ext[0] != '.':
                                 to_ext = '.'+to_ext
                            root, ext = os.path.splitext(tail)
                            print "Renaming", tail, "to", root+'_1'+ext
                            path_orig = os.path.join(head, tail)
                            path_new =  os.path.join(head, root+'_1'+to_ext)
                            os.rename(path_orig, path_new)
                            imagelist.append(path_new)                                             
                    else:          
                            try:
                                print '\n MOVE "%s" "%s"'%(name,imdir)
                                move(name,imdir)
                            except EnvironmentError:
                                print '\n Error with '+ name,

    if not recur:
        for root, dirs, files in os.walk(dirname):
            if not files:
                for name in dirs:
                    os.rmdir(os.path.join(root,name)) 
                    
                
        print 'sorting completed!'
         

image_sort(dirname, newdir) 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
##########################################################################################################
'''
by duke565
Скрипт для сортировки изображений. Собирает файлы из папок и подпапок и разбрасывает их
   по папкам указывая на них дату создания'''
##########################################################################################################  
import os
from shutil import move
import time
##########################################################################################################
dirname = '/home/duke565/splav_2/' # основаная директория
try:
    newdir = '/home/duke565/splavS/' # куда сложить
    OrigNewDir = newdir
except:
    newdir = dirname
     
def image_sort(dirname, newdir, recur= 0):
    if not recur:print 'sorting started ...'
    else: print 'sorting started in %s...'%dirname
    if not newdir: newdir = dirname
 
    imagelist = []
 
    if os.path.isdir(dirname):   #если это папка то
            for x in os.listdir(dirname):
                absx = dirname+os.sep+x # absx - путь  до файла
                if os.path.isfile(absx):
                    imagelist.append(absx) # если это файл, то записывает путь в лист
                else:
                    image_sort(absx, newdir+os.sep+x, recur=1) # 
            for name in imagelist:
                    try:
                        file_date = time.localtime(os.stat(name).st_mtime)
                    except EnvironmentError, error:
                        print 'seems error: %s with '%error, name, '/n'
                        continue
                    
                    imdir = '%s--%02d--%02d'%(file_date.tm_year,file_date.tm_mon,file_date.tm_mday)
                    imdir = os.path.join(OrigNewDir,imdir)
                    
                    if os.path.split(dirname)[-1] == os.path.split(imdir)[-1]:
                        continue
                    elif not os.path.exists(imdir):
                        print 'making dir %s'%imdir
                        os.makedirs(imdir)
                    
                   
                    head,tail = os.path.split(name)    # split orig path
                    replica = os.path.join(imdir,tail) #path file in new folder 
                    if  os.path.isfile(replica): # if file true then rename old  
                            to_ext = '.JPG'
                            if  to_ext[0] != '.':
                                 to_ext = '.'+to_ext
                            root, ext = os.path.splitext(tail)
                            print "Renaming", tail, "to", root+'_1'+ext
                            path_orig = os.path.join(head, tail)
                            path_new =  os.path.join(head, root+'_1'+to_ext)
                            os.rename(path_orig, path_new)
                            imagelist.append(path_new)                                             
                    else:          
                            try:
                                print '\n MOVE "%s" "%s"'%(name,imdir)
                                move(name,imdir)
                            except EnvironmentError:
                                print '\n Error with '+ name,

    if not recur:
        for root, dirs, files in os.walk(dirname):
            if not files:
                for name in dirs:
                    os.rmdir(os.path.join(root,name)) 
                    
                
        print 'sorting completed!'
         

image_sort(dirname, newdir) 

Строго не судите. Просто родственник попросил сделать за ничего=) Имеются конечно косяки, а в целом работает

Здравствуй уважаемый читатель. Я хочу предложить тебе возможность постепенного, пошагового изучения универсального языка программирования — Python. Область применения данного языка действительно безгранична — программы, сайты, приложения для телефонов. Всё это можно делать используя язык Python. Язык Python. Курс для начинающих Уроки по языку будут появляться с периодичностью 1–2 раза в неделю. Каждый урок посвящён строго определённой тематики и является неким конспектом по данному вопросу с нескольких авторитетных ресурсов (книги, статьи, видео-уроки) и представлен в наиболее читаемом (по мнению автора) виде. Список уже написанных уроков ты сможешь найти чуть ниже. А пока я расскажу как следить за данным курсом. Вариантов несколько: 1. У курса есть свой собственный RSS канал, на который я рекомендую подписаться 2. У курса есть почтовые рассылки на которые можно подписаться через сайт Python для начинающих

Здравствуйте, друзья!
Порой встают задачи, когда нужно выполнять некоторые задания в фоновом режиме и получать результат их выполнения. Иногда задачи требуется распределять между серверами, но ещё чаще их необходимо ставить в очередь. Для этого, и много другого существует замечательный проект Celery. Он позволяет без особого труда превращать обычные функции в т.н. tasks.

Читать дальше

Доброго времени суток, уважаемые посетители сайта python.su! Хочу сообщить вам, что несмотря на многие негативные и недоверчивые отзывы об альфа версии операционной системы POP мы готовим вторую версию системы. Этот будет Beta релиз, в который мы включили нашу новую разработку - Python Office Project! Итак, наши планы:

    Веб-браузер на питоне. Офисный пакет на питоне - СДЕЛАНО (В Beta версии)! X-сервер на питоне. Ядро на питоне. Обогнать по популярности Ubuntu и со временем Windows и занять доминирующее положение на рынке операционных систем!
Мы рады выслушать все предложения и замечания по развитию проекта! Pythons OS Project

У меня есть блог, в котором я выкладываю разные материалы относительно Python'а. На данный момент в большинстве своем это переводы документации с примерами. Думаю ресурc может быть очень полезен, добро пожаловать: john16blog.blogspot.com

Эта статья предназначена для новичков в мире Python. Статья является переводом статьи "Be Pythonic" которая рассказывает о том как следует писать на Python и чему следует придерживаться.

Когда переходишь с одного языка на другой, некоторые вещи лучше было бы не знать вовсе (см. Transfer of Learning, Перенос навыков ). То, к чему вы привыкли в других языках, не всегда окажется полезным в Python. На этой странице описаны некоторые особенности Python, которые мне особенно нравятся, и я надеюсь, что их найдут полезными те, кто отправился по «питоновскому» пути.

Читать дальше