среда, 26 сентября 2007 г.

умное удаление архивов 1с

Архивирую я базы 1с вот таким вот батником


"C:\Program Files\WinRAR\Rar.exe" a -ag -r -dh -x*.cdx \\Operator\bkp\server\SVT- d:\SVT\

который создает архивы типа такого "SVT-20070919160000.rar" несколько раз в день. Ключ -dh позволяет архивировать базу, даже если с ней работают. Очень удобно, рекомендую. Но речь не о том. Архивов создается много и через определенное время их станет очень много и... это будет не очень хорошо. Удалять руками - лень, да и глупо. Встала задача, чтобы были только свежие три архива, а остальные удалялись бы. Искал я в инете всякие батники, vbs, wsh, которые удаляют старые файлы - такой бред, не понравились совершенно. Естественно на помощь приходит Python :) Вот что из этого получилось:

# -*- coding: cp1251 -*-
import os
import operator
import re
#регулярное выражение для поиска архивов rar
pattern = re.compile(r"rar")
#директория где мы ищем старые архивы
dir = '\\\\operator\\bkp\\server\\'
#создаем кортеж из файлов с временем их создания
files_with_time = []
for each in os.listdir(dir):
path_to_file = dir+str(each)
time_of_file = os.stat(path_to_file).st_ctime
#берем только архивы rar
if pattern.findall(each): files_with_time = \
files_with_time + [(path_to_file, time_of_file)]
#сортируем полученный кортеж
files_with_time.sort(key=operator.itemgetter(1), \
reverse=True)
#три свежих файла оставляем - остальное удаляем
for each in files_with_time[3:]: os.unlink(each[0])

понедельник, 16 июля 2007 г.

копирование файлов mp3 из плейлиста Windows Media Player

Предыстория.
Сотрудница долго отбирала из всех песен, которые содержаться на компе в свой плейлист. Все это делалось в Windows Media Player. ОС - Windows Server 2003. Потом она захотела записать свой плейлист на диск. В XP с этим проблем нет, но не в Windows Server 2003. Там встроенного прожига дисков нет. В Nero плейлист не переноситься естественно. Я почесал репу и подумал, что надо помочь.
Идея такова: парсить плейлист на предмет путей к мп3шным файлам, по полученным путям скопировать файлы в отдельную папку.
Плейлист в utf-8, но я чтобы не париться с кодировками сохранил его в cp1251. И вообще у него формат похожий на xml. Но я его парсил как текст, чтобы долго не заморачиваться (ведь с xml я имел только теоретическое знакомство :) ). Вообще слово парсил как-то в моем случае высокопарно звучит.
Короче код получился такой:


# -*- coding: cp1251 -*-
"""
программа парскит файл списка воспроизведения Wimdows Media Player.
Затем копирует файлы списка в определенную пользователем папку
"""
import re
from distutils.file_util import copy_file
patt = re.compile(r".:.+mp3")
to_dir = "f:\\tmp"
file_wpl = "C:\\Python25\\scrpt\\1.wpl"
opened_file_wpl = open(file_wpl, 'r');
for line in opened_file_wpl:
num = patt.findall(line)
for each in num:
print each
try:
copy_file(each, to_dir)
except BaseException:
continue

воскресенье, 29 апреля 2007 г.

Немного понял работу с кодировками

Была проблема перекодирования из cp1251 в utf-8. Почему то ничего не получалось. А не получалось потому что ничегошеньки не понимал. Оказалось все так просто.

Пример:

text_cp1251 = 'текст'
text_utf-8 = unicode(text_cp1251, 'cp1251').encode('utf-8')

А я парился...

понедельник, 16 апреля 2007 г.

Читал diveintopython про регулярные выражения. Фраза в конце главы:

Some people, when confronted with a problem, think "I know, I'll use regular expressions."
Now they have two problems.
−−Jamie Zawinski, in comp.emacs.xemacs
(http://groups.google.com/groups?selm=33F0C496.370D7C45%40netscape.com)

Перевод для тех, кто не силен в англицком:

"Некоторые сталикваясь с проблемой думают: "Я знаю, я буду использовать регулярные выражения." Теперь у них две проблемы"

:-)

среда, 11 апреля 2007 г.

Блог как зеркало (флуд)

Когда я открывал этот блог, то не думал, что будет так трудно писать посты. Сейчас просто нет времени. Нет времени на то, что интересно. И, когда не было блога, я думал, что развиваюсь как python-программист. Хоть не много, но развиваюсь. А теперь... вижу что нет. Глядя на даты постов - все видно.
Так что блоги подобны зеркалам - кажеться, что умыт, красив, а посмотришься в зеркало... мда...

воскресенье, 8 апреля 2007 г.

Дети и Python

Племянник изучает Python. Ему тринадцать лет. Учится по книге Start with Python. Для обучения самый тот язык. Многое из того, что он делает на питоне - просто в школе даже не проходили (я имею ввиду математику). Ему интересно и это радует, может во взрослой жизни ему поможет.

пятница, 6 апреля 2007 г.

Ежегодная конференция по Ruby и Python

Уже не помню как попал на сайт RuPyRu (серия конференций разработчиков, использующих Ruby и Python). Что интересно, там есть видео и тезисы докладов. Например мне оказался полезным доклад Юревича Юрия "Использование Unicode в Python" (тезисы).
Также в Киеве проводится раз в два месяца семинар Exception. Я там еще не бродил по сайту, но он есть и это радует :)

четверг, 5 апреля 2007 г.

Почему?

Я занимаюсь (читаю книги и пишу маленькие ненужные программки) питоном где-то полгода. Почему? Давно хотел научиться программировать, но никак все не получалось. Пробовал научиться программировать на C, Delfi (Pascal), PHP, но ничего из вышеперечисленного меня не удовлетворяло. То есть не развивало меня в той степени, в которой я хотел. А хотел я УМЕТЬ программировать.
Питон другое - питон прост и вместе с тем очень мощный инструмент. О его достоинствах можно почитать где-нибудь в другом месте, т.к. писать одно и тоже не имеет смысла. Но скажу, что его используют в Google, NASA и др. Так что и нам стоит его использовать.