Фишки Python
29 subscribers
2 photos
3 files
29 links
Всё что ты хотел узнать, но ленился спросить.

Декораторы, итераторы и контракты.
Download Telegram
# Это включит автодополнение в консольном режиме python
import rlcompleter
import readline
readline.parse_and_bind("tab: complete")

Как не делать это каждый раз
В файл ~/.pyrc положить:
import rlcompleter
import readline
readline.parse_and_bind("tab: complete")

В ~/.bashrc добавить:

export PYTHONSTARTUP="${HOME}/.pyrc"
export PYTHONIOENCODING="UTF-8"

И, чтобы применить изменение прямо сейчас без перезапуска консоли, выполнить:
source ~/.bashrc
Доступ к словарю по атрибутам:

class AttrDict(dict):
def __init__(self, *args, **kwargs):
super(AttrDict, self).__init__(*args, **kwargs)
self.__dict
__ = self
Словарь с дефолтными значениями для новых ключей, создающимися на лету
d = collections.defaultdict(list)
Именованные кортежи

>>> from collections import namedtuple
>>> A = namedtuple('A', 'count enabled color')
>>> tup = A(count=1, enabled=True, color="red")
>>> tup.count
1
>>> tup.enabled
True
import psutil
import os, sys, time

pid = os.getpid()
p = psutil.Process(pid)
print(' name :', p.name())
print(' exe :', p.exe())

info = p.memory_full_info()
# Convert to MB
memory = info.uss / 1024 / 1024
print('Memory used: {:.2f} MB'.format(memory))
ptpython - Python Shell with code completion
$ python manage.py startapp appname
def invalidate_connections():
django.db.close_old_connections()
django.db.connection.close()
Read PDF in Python
https://pymupdf.readthedocs.io/en/latest/tutorial/

pip install pymupdf

import fitz
doc = fitz.open('devs/dev34_pd23-001510.pdf')
doc.getPageText(0)
Excel export

import xlsxwriter
book = xlsxwriter.Workbook('docs.xlsx', {'strings_to_urls': False})
bold = book.add_format({'bold': True})
date_format = book.add_format({'num_format': 'dd.mm.yyyy'})

sheet = book.add_worksheet()
sheet.write(row, column, value, bold)
book.close()
Формирование exe файла из скрипта на питоне

C:\Users\user.user-pc\Documents\PycharmProjects\work_stuff\venv\Scripts\pyinstaller.exe

--onefile $FilePath$

$ProjectFileDir$
ByPass Cloudflare

import cfscrape
scraper = cfscrape.create_scraper()
c = scraper.get(url)
print(c.status_code)
print(c.content.decode())
Для тех, кто работает с базами из IDE от JetBrains, рекомендую посмотреть этот видос:
https://www.youtube.com/watch?v=I4Ifpg5_CIs

Использую DataGrip с начала ее появления, и удобнее тулзы для работы с базами я не видел.
На винде использовал IDE от sqlmanager.net, но после переезда на мак приходилось страдать.

В видосе полезно приблизительно все. Я не знал процентов 80 и теперь боюсь подумать о том, сколько же времени я мог сэкономить, если бы знал хотя бы половину.
Один переход между таблицами по FK чего стоит!

Функционал DataGrip встроен и в другие IDE, поэтому будет актуально для пользователей всех продуктов JetBrains.

Кстати, разрабы завели баг-трекер с человеческим лицом в виде чата в телеге, где довольно любезно отвечают на запросы юзеров. Я уже зарепортил парочку :)
https://t.me/datagrip
from ttp import ttp

data_to_parse = """
interface Loopback0
description Router-id-loopback
ip address 192.168.0.113/24
!
interface Vlan778
description CPE_Acces_Vlan
ip address 2002::fd37/124
ip vrf CPE1
!
"""

ttp_template = """
interface {{ interface }}
ip address {{ ip }}/{{ mask }}
description {{ description }}
ip vrf {{ vrf }}
"""

https://ttp.readthedocs.io/en/latest/Quick%20start.html