Re: [python] Spracovávanie e-mailov v mboxe (Thunderbird)

2019-09-18 Tema obsahu Lumír Balhar
Ahoj.

A musí to být řešení šíté na míru Thunderbirdu? Mám par skriptů, které mi 
různým způsobem manipulují s poštou, ale všechny to dělají skrze IMAP přímo na 
serveru a tak je pak výsledek synchronizovaný ze serveru na všechna propojená 
zařízení.

Jinak Python má ve tsandardní knihovně moduly pro práci s emaily v různých 
formátech (Mailbox, Maildir).

Hezký den.
Lumír

Dne středa 18. září 2019 10:28:16 UTC+2 ZdPo Ster napsal(a):
> Ahojte,
> 
> 
> máte nie skúsenosti so spracovávaním e-mailov v mboxe?
> 
> 
> Môj problém je, ako označiť, že (spracovaný) email bol prečítaný.
> 
> 
> Kontext: potrebujem skript, ktorý raz denne prebehne emaily (v mbox formate / 
> Thunderbird) označené ako neprečítané. Ak e-mail nespĺňa kritériá 
> (odosielateľ, príloha), tak ho označí ako prečítaný... (Thunderbird používa 
> pre neprečítané emaily status "X-Mozilla-Status: " po prečítaní ho zmení 
> na "X-Mozilla-Status: 0001")
> 
> 
> Zdenko
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] pandas to excel bez přepsání původních hodnot

2019-05-25 Tema obsahu Lumír Balhar
Dne pondělí 20. května 2019 19:00:18 UTC+2 radek...@gmail.com napsal(a):
> Dobrý den,
> mám tady další velice (určitě pro vás) jednoduchý problém, s kterým se 
> nedokážu poprat.
> 
> Mám napsaný skript, který mi každý den vypíše data a exportuje do .xlsx 
> souboru, kde filtruji do dvou sheets (BOT, SLD).
> 
> Potřeboval bych, aby se další den hodnoty doplnily na nový řádek opět podle 
> filtru (BOT, SLD). Takhle se tabulka pokaždé přepíše.
> 
> 
> # získání informace o vyplněných příkazech
> 
> exekuce = (e for e in ib.fills() if e.contract.secType == "STK")
> exekuce = 
> [(e.contract.symbol,e.time,e.execution.side,e.execution.shares,e.execution.avgPrice,e.execution.orderRef)
>  
>for e in exekuce]
> exe=pd.DataFrame(exekuce, columns=['symbol', 
> 'cas','smer','akcii','cena','ref'])
> #exe['cas'] = pd.to_datetime(exe['cas'], format="%m/%d/%Y")
> exe.set_index("symbol",inplace=True)
> print(exe)
> 
> # DataFrame si pro kontrolu vypíšeme
> exe
> 
> # Uložíme do excelu, zvlášť nákup a zvlášť prodej
> exe_bot = exe[exe['smer']=='BOT']
> exe_sld = exe[exe['smer']=='SLD']
> 
> with pd.ExcelWriter('exekuce.xlsx') as writer:
> exe_bot.to_excel(writer, sheet_name='Nákup')
> exe_sld.to_excel(writer, sheet_name='Prodej')
> 
> 
> 
> Děkuji za případnou pomoc. Předem upozorňuji, že jsem naprostý začátečník, 
> tak snad je to srozumitelné.

Ahoj.

Nemám teď moc času, tak zkusím jen nastřelit možné řešení. Kdyby bylopotřeba 
více detailu, napiš a já doplním i s příklady.

Řešením problému je to, že místo vytváření nového pd.DataFrame si načteš ten 
původní z .xlsx souboru, doplníš jej o nové řádky a pak jej stejně jako doposud 
uložíš zpět do .xlsx souboru.

1. Načteš existující .xlsx soubor do dvou DataFramů (pro každý list jeden) - na 
to je funkce read_excel 
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html#pandas-read-excel
2. Ve svém programu si klidně stejně jako doposud vytvoříš dva nové DataFrame 
exe_bot, exe_std
3. Tyto nové hodnoty přidáš pomocí metody .append do DataFramů, které sis 
načetl  v bodě 1 ze souboru 
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html
4. Uložíš DataFrame obsahující spojené nové a staré hodnoty zpět do .xlsx 
souboru jako doposud.

Jiné je v tom pro jednoduchost jen to, že si načtěš ze souboru staré hodnoty a 
před uložením je spojíš s novými hodnotami.

Snad to alespoň trošku pomůže. Kdyby ne, dodám více detailů i s příklady.

Lumír
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] PyFormat 0.1.0 released

2016-08-23 Tema obsahu Lumír Balhar
Dne pondělí 22. srpna 2016 23:43:41 UTC+2 Pavel Schön napsal(a):
> > Je super vidět boost::python v praxi.
> To jsem rád.
>   
> > Jen instalace by možná byla lepší pomocí setup.py a trochu obecnější, než 
> > Debian balíček. Byly s tím setup.py nějaké problémy, nebo je to v todo 
> > listu, nebo se to zatím nezkoušelo? :)
> 
> setup.py se zkoušelo také, ale je problém s detekcí libboost_python. (každá 
> distribuce to má jinde a jinak pojmenované (debian: libboost_python-py27.so 
> resp. libboost_python-py34.so )
> 
> make install by měl také fungovat.
> 
> Co se týče balíčků, tak CMake umí generovat i rpm, ale nemám to jak 
> otestovat, tak jsem to tam radši nedal. Klidně pošli pull request pro rpm i 
> setup.py :)

S tvorbou RPM balíčku rád pomůžu. Je už nějak připraven a je ho třeba jen 
otestovat?

> 
> > >>> fmt1, fmt2 = U('first'), U('second')
> > 
> > >>> fmt1.swap(fmt2)
> > 
> > swap operátor v Pythonu? Interjazyková prasárna :)
> > 
> 
> haha, ale tady je to myšlěno zcela vážně :) Dovedu si představit využití 
> třeba s coroutinami...

___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Paměťově náročné řazení

2015-06-29 Tema obsahu Lumír Balhar
Díky všem za rady a odpovědi. Nakonec jsme to vyřešili vlastní implementací 
funkce cmp, která z každého řádku porovnala jen prvních několik znaků a v 
případě shody pak porovnala další dávku znaků.

Není to sice nic moc rychlého, ale alespoň to neskončí na OOM killeru.

Ještě jednou děkuji a přeji hezký den.
Lumír
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] regulární výrazy

2015-06-29 Tema obsahu Lumír Balhar
Ahoj.

Pro každá vstupní data by se dal napsat regulární výraz, který by je testoval. 
V Pythonu je k tomu určen modul re.

Například pro stav relé by to mohlo vypadat takto:

import re
re.match(r'^[01]{10}$', '1010010110')

re.match testuje regulární výraz proti zadanému vstupu. Pokud vyhovuje, vrátí 
ti Match object, pokud nesedí, vrátí None. Konkrétně tento testuje, zda je celý 
řetězec kombinací jen jedniček a nul v počtu deseti. Pokud tam bude kdekoli 
jakýkoli jiný znak, nebo bude vstup delší či kratší, bude vracet None.

Analogicky pro stav napětí (to samé, jen pro kratší řetězec):

re.match(r'^[01]{2}$', '01')

Pro stav teplot je to drobet složitější, ale princip je pořád stejný:

re.match(r'^[0-9]{4}\|[0-9]{4}\|[0-9]{4}\|$', '1256|1360|1150|')

Jednoduše řečeno - hledej od začátku čísla 0-9 v počtu čtyř, pak svislítko, pak 
další čtyři čísla, pak zase svislítko atp. až do konce.

Na poslední vstup bych regulární výrazy nepoužil. Místo toho bych si datum 
nechal konvertovat do objektu datetime takto:

from datetime import datetime
datetime.strptime('23.06.2015 16:01:35', '%d.%m.%Y %H:%M:%S')

Funkce v tomto případě vyrobí objekt reprezentující datum a čas rozparsované z 
řetězce dle zadaného formátu. Pokud by řetězec tomuto formátu neodpovídal, 
funkce vyvolá výjimku. Výjimku také vyvolá, pokud by na vstup přišlo nějaké 
nesmyslné datum jako 32. den v měsíci či 17. měsíc apod.

Snad je to srozumitelné. Před použitím doporučuji otestovat, zda naměřené 
hodnoty opravdu odpovídají těmto reg. výrazům.

Hezký den.
Lumír


Dne pondělí 29. června 2015 21:07:36 UTC+2 Ing. Vladislav Ludík napsal(a):
 Zdravím,
 
 moje elektronika mi vrací po sériovém portu několik druhů dat:
 
 stav relé: 010101010101 - 10-ti místný výstup 0 nebo 1
 stav napětí: 01 - 2-místný výstup 0 nebo 1
 stav teplot: 1256|1360|1150| 15-ti místný výstup tří skupin oddělených |
 datum a čas: 23.06.2015 16:01:35 19-ti místný výstup
 
 Složitě to otestovat umím.
 Test by měl rozpoznat chybnou délku, formát a nelegální znaky 
 testovaných dat.
 Chtěl bych použít co nejjednodušší test.
 Zatím se mi to moc nedaří.
 Poradí mi někdo ?
 
 Díky Vláďa
 
 
 
 --- news://freenews.netfront.net/ - complaints: n...@netfront.net ---
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


[python] Paměťově náročné řazení

2015-06-15 Tema obsahu Lumír Balhar
Ahoj všem.

Řeším s kamarádem jeden jeho projekt, jehož součástí je i Burrows-Wheelerova 
transformace, která se používá před kompresí dat společně s Move to Front 
transformací pro snížení entropie vstupních dat a tím zvýšení efektivity 
kompresního algoritmu, kterému tyto dvě transformace předcházejí.

Pochopení transformací není potřeba. U BWT se využívá tzv, buffer, který 
obsahuje všechny možné rotace vstupních dat, takže například pro ema má maso 
vypadá takto:

 0 ema ma maso
 1 ma ma masoe
 2 a ma masoem
 3  ma masoema
 4 ma masoema 
 5 a masoema m
 6  masoema ma
 7 masoema ma 
 8 asoema ma m
 9 soema ma ma
10 oema ma mas

Pro malá data je to dobré, ale pro velká nelze mít celý buffer v paměti, 
protože se pro každý vstupní znak navíc rozšíří o řádek i sloupec zároveň.
Napsal jsem tedy pro Buffer samostatnou třídu, kde pomocí __getitem__ 
vygeneruji potřebný řádek posunem až ve chvíli, kdy je jeho obsah potřeba.

Základní buffer jsem tím vyřešil a ušetřil hromadu paměti. Problém ale je, že v 
dalším kroku potřebuji tento buffer lexikograficky seřadit. Abych jej opět 
nemusel cpát do paměti, vytvořil jsem pole indexů, kde každý index reprezentuje 
jeden řádek bufferu a řadím jen toto pole (čímž získám přeskládané pořadí řádků 
původního bufferu), ale jako klíč používám právě obsah řádku pro daný index.

Konkrétně:

class Buffer():
def __init__(self, input):
self.input = input
self.indexes = [x for x in range(len(input))]

def __getitem__(self, index):
return self.input[index:] + self.input[0:index]

def sort(self):
self.indexes.sort(key=lambda x: self[x])


A teď jsme se dostali k jádru problému. I když se obsah jednotlivých řádků 
generuje až ve chvíli, kdy jsou potřeba, a řadit by se mělo jen relativně malé 
pole indexů, při volání funkce .sort() se jakoby stejně celé to pole nejdříve 
vytvoří v paměti, seřadí a pak se seřadí to cílové pole s indexy na základě 
obsahu bufferu.

Existuje způsob, jak implementovat takovýto řadící algoritmus pro velký objem 
dat, aniž bych je měl v jednu chvíli všechny v paměti?

Předem díky za nakopnutí tím správným směrem.
Lumír
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


[python] Dubnové Ostravské Pyvo s Rubači

2015-03-30 Tema obsahu Lumír Balhar
Ahoj.

Už tento čtvrtek se koná další Ostravské Pyvo s Rubači, jehož hlavním tématem 
bude debugování a profilování aplikací.

Více informací zde: http://srazy.info/pyvo-v-ostrave/5310

Těšíme se na Vás.
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


[python] Březnové Ostravské Pyvo s Rubači

2015-02-23 Tema obsahu Lumír Balhar
Ahoj.

První březnový čtvrtek se bude konat další setkání uživatelů programovacích 
jazyků Python a Ruby v Ostravě. Tentokrát se k nám přidají i programátoři v PHP 
a budeme se zabývat porovnáváním webových frameworků, konkrétně přijdou na 
přetřes Django, Rails a Symfony.

Více informací zde: http://srazy.info/pyvo-v-ostrave/5200

Těšíme se na Vaši účast.
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


[python] Únorové Ostravské Pyvo s Rubači

2015-01-08 Tema obsahu Lumír Balhar
Ahoj.

Tímto bych všechny místní, ale i vzdálené, rád pozval na další Ostravské Pyvo s 
Rubači.

Více informací naleznete zde: http://srazy.info/pyvo-v-ostrave/5088

Hezký večer.
Lumír
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


[python] Ostravské Pyvo s Rubači + nabídka práce

2014-12-01 Tema obsahu Lumír Balhar
Zdravím.

Předem bych Vás chtěl pozvat na následující Ostravské Pyvo s Rubači, 
které se koná již tento čtvrtek od 19 h v restauraci V. R. Levský 
nedaleko Stodolní ulice. Více info zde: 
http://srazy.info/pyvo-v-ostrave/5011

Dále pak přeposílám pracovní nabídku, která mi přišla emailem a pro 
jejíž realizaci aktuálně nemám kapacitu.

Přeji hezký večer.

Dobry den,

mel bych zde jeden zajimavy projekt v Pythonu - FW Django (XML-RPC 
sReality import, integrace platebni brany a dalsi ukoly).

Jak jste na tom nyni kapacitne, zmenilo se neco?

S pozdravem,
Petr Hasalík
petr.hasa...@direct-services.cz mailto:petr.hasa...@direct-services.cz
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


[python] Ostravské Pyvo s Rubači - Testování

2014-10-27 Tema obsahu Lumír Balhar
Ahoj.

Rád bych Vás tímto pozval na další Ostravské Pyvo, které se od tohoto měsíce 
spojuje s Ostravskými Rubači. Tématem bude testování a těšit se můžete na 
několik zajímavých příspěvků.
Sraz se uskuteční ve čtvrtek 6. listopadu od 19:00 v restauraci V. R. Levský 
nedaleko Stodolní ulice.

Více informací naleznete na http://srazy.info/pyvo-v-ostrave/4867, 
https://www.facebook.com/events/1489105704698631/ a 
http://lanyrd.com/2014/ostrava-pyvo-november/.

Mějte se.
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


[python] Pyvo v Ostravě

2014-09-18 Tema obsahu Lumír Balhar
Ahoj.

Pokud se to k Vám ještě nedoneslo, i v Ostravě máme Pyvo a úspěšně fungujeme 
již skoro rok.

Tímto bych Vás rád pozval na další setkání, které proběhne ve čtvrtek 2. října 
v restauraci V. R. Levský.

Více informací zde:
Lanyrd: http://lanyrd.com/2014/ostrava-pyvo-october/
Srazy.info: http://srazy.info/pyvo-v-ostrave/4796
Facebook event: https://www.facebook.com/events/832212330157421/

Hezký večer. Lumír
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] vypočítaný rok ako webová adresa

2014-09-10 Tema obsahu Lumír Balhar
import urllib2
from datetime import datetime

A = datetime.now().year
B = 27
content = urllib2.urlopen('http://sk.wikipedia.org/wiki/%d' % (A - B)).read()

Hezký den.
L.

Dne středa, 23. července 2014 15:43:46 UTC+2 Martin Guľkaš napsal(a):
 Dobr� de� m�m mal� probl�mik:  chcem v pythone pou�i�  
 vypo��tan� rok  
 
 ako hodnotu do url adresy
 
   v�sledok by bolo vyp�san� udalosti z tohto roku
 
 
 
 vyzeralo by to nejako takto :  A = 2014
 
  B = zadanie
 
  C = A-B
 
  print narodili ste sa v roku,C
 
  import urllib2
 
  web = urllib2.urlopen(http://sk.wikipedia.org/wiki/,C;).read()
 
  print web
 
 
 
 len�e program havaruje pr�ve ak ma prenies� k tejto adresy hodnotu 
 
 v�sledku to C
 
 
 
 Ako m�m zap�sa� adresu aby v�sledok bol jej s��as�ou?
 
 
 
 --- news://freenews.netfront.net/ - complaints: n...@netfront.net ---
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz