0

ipython: prevent ipython from printing an exit confirmation message

ipython profile create
echo 'c.TerminalInteractiveShell.confirm_exit = False' >> ~/.ipython/profile_default/ipython_config.py
0

django: get inner type of model field value

obj.__class__._meta.get_field('fieldname').get_internal_type()

source: Can i get models field type from a model queryset in Django? – Stack Overflow

0

python: unescape HTML

import re
from htmlentitydefs import name2codepoint

def htmlentitydecode(s):
    return re.sub('&(%s);' % '|'.join(name2codepoint), lambda m: unichr(name2codepoint[m.group(1)]), s)

source

0

python: Bad magic number ImportError

Подобная ошибка всплывает, когда вы пытаетесь запустить уже скомпилированный *.pyc-файл версией питона, которая отличается от той, в которой он изначально компилировался. Решение: удалить и перекомпилировать. Но что если это не просто маленький скрипт и большое приложение с кучами папок-подпапок? Тут нам на помощь приходит bash:

~/your_projects_dir/project_name$ find -name *.pyc | xargs rm

Источники:
1) python – What's the bad magic number error? – Stack Overflow
2) Полезные команды Linux — Movable Type Wiki

0

python: повторить текущую итерацию

for i in range(0,100):
    while True:
        try:
            do_smth(i)
        except MyException:
            continue
        break

Источник: How to retry after exception in python? – Stack Overflow

0

python: произвольная строка символов

import string, random
print ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for x in range(length))
0

python: определить количество элементов с заданным значением в списке

>>> a = [1, 2, 3, 4, 1, 5]
>>> a.count(1)
2
>>> a.count(2)
1
0

python: копирование объекта

from copy import deepcopy
copied_obj = deepcopy(obj)

Источник: Copy Model Object in Django | Nerdy Dork

0

python: can’t compare offset-naive and offset-aware datetimes

Если при сравнении двух дат получаем:

TypeError: can't compare offset-naive and offset-aware datetimes

то значит, что одна из дат имеет тайм-зону, а другая – не имеет, поэтому питон не может их сравнить =/.

0

python: развернуть строку или список

$ python
Python 2.7.2+ (default, Oct  4 2011, 20:06:09)
[GCC 4.6.1] on linux2
>>> a = 'HASSHIN!'
>>> a[::-1]
'!NIHSSAH'
>>> b = ['A', 't', 'a', 'r', 'e', '-', '!']
>>> b[::-1]
['!', '-', 'e', 'r', 'a', 't', 'A']
0

IndentationError: unindent does not match any outer indentation level

Если получили такую ошибку, то скорее всего что-то не так с отступами в коде:

  • смешанное использование табов и пробелов;
  • где-то не хватает пробела, или, может быть, поставлен лишний пробел.

Ищите, исправляйте о/

2

Перевод чисел из десятичной системы счисления и обратно в python

Перевод из десятичной системы в двоичную, восьмиричную и шестнадцатиричную (данный способ оставляет вначале результативной строки префикс системы счисления – ’0b’, ’0′ и ’0x’ соответственно):

dec_num = 36
print bin(dec_num) # '0b100100'
print oct(dec_num) # '044'
print hex(dec_num) # '0x24'

Перевод из двоичной, восьмиричной и шестнадцатиричной систем в десятичную:

print int('10110', 2)   # 22
print int('1653', 8)    # 939
print int('50a7f9', 16) # 5285881

Источник: Built-in Functions — Python v2.7.2 documentation

0

Перетасовать и раздеть в python

Две быстростроки питонокода (не считая импортных, ок). Первая располагает элементы списка в случайном порядке, вторая выкидывает все html-теги (вернее вообще любые теги) из строки.

import random
random.shuffle(list)
import re
text = re.sub('<.*?>', '', text_with_tags)

Капитан подсказывает, что вторую можно применять практически в любом языке, где есть регэкспы.

0

fatal error: Python.h: No such file or directory

У меня такая ошибка возникла при попытке установить сторонний модуль питона через PIP. Решение у проблемы элементарное — поставить dev-пакет к своей версии питона. Для debian/ubuntu это может выглядеть так:

$ sudo apt-get install python2.7-dev

Источники:
Alex Sleat — How To Fix: fatal error: Python.h: No such file or directory

0

Смена версии Python по умолчанию

Не всегда между старшей и младшей версиями какого-либо программного продукта есть обратная совместимость. Если под одной версией работает нормально, то под другой может и не заработать вовсе.

С подобной проблемой я как раз и столкнулся. Django для своей работы требовал Python 2.6, однако в убунточке по умолчанию стоит Python 2.7. Казалось бы, ничего сложного, доствь 2.6 и всё ок. Но нет. Даже поставив рядом 2.6 Django всё равно брал версию, которая стоит по умолчанию, т.е. 2.7. Выход из данной ситуации простой — понизить версию питона ручками. Итак, поехали:

1) Открываем с правами рута файл /usr/share/python/debian_defaults и меняем версию по умолчанию на python2.6.

2) Далее, в директории /usr/bin/ ищем файл python и переименовываем его:

$ sudo mv /usr/bin/python /usr/bin/python27

Примечание: именно переименовываем, а не удаляем, т.к. в будущем он может пригодиться.

3) В той же директории создаём символьную ссылку на исполняемый файл Python 2.6 с именем python (как изначально и было).

$ sudo ln -s /usr/bin/python2.6 /usr/bin/python

4) Перезагружаемся.

Теперь по умолчанию используется Python 2.6.

PS:
После понижения версии Python могут перестать работать некоторые приложения (например у меня после понижения отказался работать установщик проприетарных драйверов Jockey), которые настроены так, чтобы использовать версию Python по умолчанию, и если версия python по умолчанию их не удовлетворяет — они не работают. Лечится это тем же способом, но только наоборот. Поэму неиспользуемые символьные ссылки на python лучше не удалять. И ещё: при понижении версии, все модули, поставленные через PIP, придётся устанавливать заново.

Источники:
Change the default python version in ubuntu