Python


Използване на pdftk на Fedora 25+

Публикувано на

От няколко версии на сам pdftk не може да се намери в хранилищата на Fedora заради различни проблеми свързани с gcj и други. Ако все пак искате да ползвате pdftk под Fedora, може да стане със следния workaround посредством Docker и Python.

#!/usr/bin/env python
import os
import sys
import subprocess

PDFTK_DOCKER_IMAGE = 'agileek/pdftk'


def main(*argv):
    file_args = {'stamp', 'output'}
    files = {}
    last_arg = None
    pdftk_args = argv[1:]
    if (pdftk_args):
        files['input'] = pdftk_args[0]
        for arg in pdftk_args[1:]:
            if last_arg:
                if last_arg in file_args:
                    files[last_arg] = arg
                last_arg = None
            else:
                last_arg = arg

    volumes = set()
    for val in files.values():
        if ...
Comments

Python3 json.loads когато се подаде bytes

Публикувано на

Когато се мигрира от Python2 на Python3, може да се попадне в много неудобна ситуация, при която имате bytes обект, който искате да подадете на json.loads, и да ви го обърне в JSON. Тогава ще гръмне с TypeError, че очаква str а не bytes.

Някой би поспорил, че това е напълно коректно и трябва ние предварително да си декодираме bytes данните преди да ги подадем на json.loads. От Python 3.6 обаче може да се подаде bytes, който е кодиран като utf8, utf16 или utf32 и json.loads автоматично ще се оправи с това. При Python 2.7 ако ...

Comments

Pretty print на JSON с Python

Публикувано на

Наложи ми се да разгледам по-детайлно един JSON стринг, който беше доста дълъг и само на един ред. Знам, че има online JSON pretyfier-и, но ми се искаше да видя какво е необходимо за да си го направя локално в терминала (по-конкретно в ipython). Оказа се доста просто:

import json
from collections import OrderedDict

json_data = r'''paste your JSON here'''

data = json.JSONDecoder(object_pairs_hook=OrderedDict).decode(json_data)
print(json.dumps(data, indent=2, ensure_ascii=False))

Кратко и красиво

Comments

Python на Host.bg е равно на мисията невъзможна!

Публикувано на

За втори път ми се наложи да се опитам да пусна Django сайт на споделен хостинг на Host.bg. Както може да се досетите за втори път е неуспешен. Причината е, че от Host.bg упорито отказват да инсталират няколко пакета, като единият от тях е меко казано задължителен за всяка CMS система - PIL/Pillow. Оправданието им е: За съжаление на споделен хостинг се избягва добавянето на подобни модули, който не са включени в началната конфигурация и компилирането на сървъра. Вече на cloud сървъра вие имате пълната свобода да инсталирате , каквото желаете като модули и плъгини..

Само ще вметна че ...

Comments

Измерване на време за изпълнение на код в Python

Публикувано на

Налагало ли ви се е да разберете за колко време се изпълнява даден код в Python? По принцип си има вградена функция която да помага за това. Документация за нея може да се намери в http://docs.python.org/2/library/timeit.html.

Проблема при стандартна функиця е, че кодът който искаме да измерим трябва да го подадем като стринг. Много по удобно би било ако може върху съществуващ наш кода да го оградим някак си и да видим колко време отнема. Преди време бях намерил такова нещо някъде из интернет, но сега не успях. Идеята беше много хитра. Използваше ...

Comments

Конвертиране на текстов файл от един енкодинг в друг

Публикувано на

Преди врме си купих телевизор Panasonic Viera. Той има много функции, една от която е възпроизвеждане на файлове от USB носител и дори показване на Xvid субтитри. Това е много удобно, тъй като може да се копира филм на флашка и да се гледа директно на телевизора без никакъв компютър или някакво DVD устройство.

Когато пуснах филм обаче бях неприятно изненадан. Субтитрите бяха на "маймуница". Веднага ми светна че encoding-а на субтитрите не е правилен. Започнах да си играя да го сменям докато накрая мога да ги чета и установих че правилният за моя телевизор е ISO-8859-5.

Има различни текстови ...

Comments

Да обърнем внимание на форматирането на стринг

Публикувано на

Днес ми се случи един странен проблем, на който искам да обърна внимание свързан с форматиране на стрингове в Python. Всички знаем форматирането във версиите преди 2.7

>>> print "Some text %s" % 'other text'
Some text other text

>>> print "Some text %s %s" % ('other', 'text')
Some text other text

Това можем да го ползваме най-вече за подаване на съобщение от променлива

>>> message = u'This is the message'
>>> print 'The message is: %s' % message
The message is: This is the message

До тук всичко е ясно и не казвам нищо ново. Ето един пример и за '%r ...

Comments