def motion():
d = dt()
print(d, "Motion is detected detected by the HC-SR501 motion sensor!")
logging.info("Motion is detected detected by the HC-SR501 motion sensor!")
def nomotion():
d = dt()
print(d, "There is no motion deteted by the HC-SR501 motion sensor!")
logging.info("There is no motion deteted by the HC-SR501 motion sensor!")
def security():
global ir
logging.basicConfig(filename=logfile, level=logging.INFO, format="%(asctime)s %(message)s", datefmt="%Y-%m-%d_%H.%M.%S")
logging.info("The rathunter4.py was started.")
with MotionSensor(7) as pir: #Create Object for HC-SR501 and assign pin 26(GPIO 7) to PIR
print("Press Ctrl+c to exit!")
d = dt()
print(d, "The HC-SR501 motion sensor is being initialized ...")
logging.info("The HC-SR501 motion sensor is being initialized ...")
pir.when_motion = motion
pir.when_no_motion = nomotion
with picamera.PiCamera() as camera:
camera.resolution = (1280, 720)
camera.framerate = 25
camera.rotation = 0
stream = picamera.PiCameraCircularIO(camera, seconds=6)
# Camera warm-up
d = dt()
print(d, "The camera is warming up, waiting for 2s ...")
logging.info("The camera is warming up, waiting for 2s ...")
time.sleep(2) # Camera warm-up time
camera.start_recording(stream, format='h264', quality=20)
try:
while True:
camera.wait_recording(1)
if pir.motion_detected == True:
if ir == True: #Turn on LED(IR reflector) if needed
#Assign pin 16(GPIO 23) to LED(IR Reflector)
with LED(23) as led:
led.on() #Turn on LED(IR reflector)
# Keep recording for 6 seconds and only then write the
# stream to disk
# Get a Filename
d = dt()
filename = getFileName(d)
#camera.annotate_background = picamera.Color("black")
camera.annotate_text = host+" Cam "+d
# Keep recording for 3 seconds and only then write the
# stream to disk
camera.wait_recording(3)
if ir == True: #Turn off LED(IR reflector) if needed
with LED(23) as led:
led.off() #Turn off LED(IR reflector)
t1 = time.time()
stream.copy_to(filename)
t2 = time.time()
sdiff = str("{0:0.2f}".format(t2 - t1))
print(d, filename+" was created. The stream copying time was", sdiff, "seconds.")
logging.info(filename+" was created. The stream copying time was "+sdiff+" seconds.")
except KeyboardInterrupt: #Ctrl+c
pass #Do nothing, continue to finally
finally:
camera.stop_recording()
logging.info("The rathunter4.py was ended.")
def main():
security()
main()
[/code]
- Ice blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
A forráskódot rakd be így code környezetben, olvashatóbb lesz:
[code]
...
def getFileName():
return datetime.datetime.now().strftime("%Y-%m-%d_%H.%M.%S.jpg")
...
[/code]
- A hozzászóláshoz be kell jelentkezni
Milyen faja is az, amikor a tördelés a kód része... :-D
- A hozzászóláshoz be kell jelentkezni
Milyen fain is az, amikor nem csak a tervezési hibákat, de még a sorokat is egyesével kell kiganézni egy legacy kódban, mert a nyelv túl megengedő volt, az előző fejlesztő meg úgy gondolta, hogy milyen cool az obfuscated Perl vagy C.
- A hozzászóláshoz be kell jelentkezni
man cb
(C beautifier. Gyengébbek kedvéért az indent parancs elődje már 30 - 35 évvel ezelőttről. Azaz már akkor sem kellett neked kiganézni, ha nem tetszett az előző fejlesztő konvenciója.)
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
- A hozzászóláshoz be kell jelentkezni
+1, Perl esetén ott a perltydy (perldoc perltidy), de más nyelvekre is van kódformázó tool, ami a péklapáttal kezelendő kódgányolók szemetét emészthető (csapatmunka esetében közös kódbázisba berakható) formára hozza.
- A hozzászóláshoz be kell jelentkezni
Mindez nem változtat azon, hogy ha például egy C kódot szúrt volna be így (= indent nélkül), az szintén nehezen olvasható volna.
- A hozzászóláshoz be kell jelentkezni
+1
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Az legfeljebb nehezen olvasható, a python viszont használhatatlan. Remélem, érzed a különbséget...
- A hozzászóláshoz be kell jelentkezni
+2
- A hozzászóláshoz be kell jelentkezni
Viszont cserebe mukodik. Az is egy nagy szo. Bemasolsz egy kodreszltetet valami egyedi(bb) stylesheet-tel rendelkezo forumra - es ugyan nem biztos hogy a legszebben fog kinezni, de ha egy masik Pistike kimasolja a kis editoraba, leforditja, stb, akkor mukodni fog es azt csinalja amire a kolto gondolt. Az ultimate enterprise agyonhajpolt csodapalytonnal ezt nagyjabol cseszheted. Es akkor az "emailen atkuldjuk" meg haosonlo josagokrol ne is beszeljunk.
- A hozzászóláshoz be kell jelentkezni
Egy pythonos kód "ömlesztett" közzététele nem a nyelvet minősíti, hanem a mindenkori publikálót.
Ez csak megjelenítési probléma olyan médiumokon, mint a HTML és a PDF, ahol alapértelmezetten a 0x20 értéktelen, információt nem hordozó, és így kidobandó kód. A szöveg- és kódszerkesztők persze kezelik. És ugye speciális tagokkal a HTML és PDF is. De lehetett volna fordítva is, azaz, hogy a 'space' alapértelmezetten feldolgozásra kerül és a lenyeletéséhez lenne szükség speciális tag használatára.
Véleményem szerint ez az egész csak megszokás kérdése, azaz világnézeti probléma:-)
(Hagyjuk el az Univerzumból is, amit nem látunk, a neutrinót, a sötét anyagot. Ugyanolyan rosszul fog működni, ahogy egy Python-kód:-)
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Hat, nem tudom. Ha egy program mukodese attol fugg hogy hogy is vannak azok a dolgok amiket nem lathatunk by def, akkor az azert erosen szuboptimalis. Most nem csak az indentalasra (ugy altalaban) gondolok, hanem a tab vs. 8 space vs. 4 space vs. "annyi space amennyit a kedvenc editorom epp odagondol mikor mas kodjat basztatom es/vagy osszemixelem a sajatommal" temakorben.
- A hozzászóláshoz be kell jelentkezni
A sor eleji whitespace kettő (plusz egy) nyelvben releváns infó: Whitespace és Python - aplusz egy az a Fortran.
"ez az egész csak megszokás kérdése" - igen, a szépen formázott kód is csak megszokás kérdése - lenne, de a pájton nem megszokás, hanem megsz0pás alapon kényszeríti ki a "szépre" formázott kódot. Miért? Mert önmaguktól szépen dolgozni képtelen/nem akaró (lusta, trehány) kódfaragóknak is sikerélményt akar nyújtani. Gondolom, a nyelv és a szintaxis megalkotója önmagából kiindulva csinálta ilyenre, amilyen...
- A hozzászóláshoz be kell jelentkezni
Mert önmaguktól szépen dolgozni képtelen/nem akaró (lusta, trehány)...
Hát bizony ezek a lusták, trehányak szívnak, ha elfelejtenek indentálni.
Meg a nem lusták, nem trehányak is, ha figyelmetlenek.
Miért foglalkozol ennyit a Pythonnal, ha utálod? Ez érthetetlen számomra.
Egyébként a Google, és ha jól tudom a Facebook rendszereiben is millió sornyi Python-kód van.
A Python "teljes használhatatlansága" ellenére.
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Nem írtam sehol, hogy teljesen használhatatlan, csak azt, hogy a whitespace, mint a programkód vitális komponense az szerintem ordenáré nagy baromság, és vegyes környezetben, kódrészletek megosztásánál irgalmatlan nagy katyvaszt tud csinálni.
Láttam Perl könyvet, ahol a forráskódok egy részét proporcionális betűtipussal szedték valamilyen általam ismeretlen okból. Nem okozott gondot. Ugyanez pájton könyvnek egyenes út a zúzdába, mert használhatatlanná válik a forrás csak attól, hogy nem látszik, hova hány és milyen whitespace karakter kerülne.
- A hozzászóláshoz be kell jelentkezni
Erről csak annyit, hogy kezdő bitfarigcsálóként sokáig tartott megszoknom, hogy milyen is a _nekem_ optimális indentálás. Volt tab, majd 1 < x < 8 space, aztán ez csökkent 4-re, aztán végül 2-re - a vi azon jó tulajdonságát kihasználva, hogy meg lehetett neki mondani, hogy én márpedig tabulátorkodni szeretnék, de vizuálisan nem szeretem a hosszú sorokat. Nekem jó volt, más meg azt csinált a tabjaimmal, amit akart - a fent emlegetett cb-vel. De mondjuk Pythonban valszeg nagyon gáz lenne a 2 szóköz(nek látszó tab). Nekem mindig vizuális segítséget (is) jelentett a kapcsos zárójel.
(Fájl elején:
/*
ex: ts=2 sw=2
*/
vagy hogy is kellett ezeket a formázó vackokat beleírni.)
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
- A hozzászóláshoz be kell jelentkezni
Nem valótlan amit írsz, de nem hiszem, hogy ettől a python rossz lenne.
Valóban, ha a könyv nyomtatását elcseszik (bár pont a proporcionális karakteres indentálásnál még látszik az, hogy melyik van kijjebb, melyik meg beljebb), akkor a könyv kuka.
Jobban oda kell figyelni.
Nehezebb megosztani forrást? Igen, jobban oda kell figyelni. Ettől a nyelv nem rossz.
Ha C-ben programozunk, akkor is oda kell figyelni dolgokra. Csak más dolgokra figyelünk. Nem ettől lesz jó vagy rossz egy nyelv.
Persze én, te, bárki más dönthet úgy, hogy valamelyik nyelvet valamelyik tulajdonsága miatt nem kedveli, ez mindenki szíve joga. De ettől nem lesz az a nyelv rossz.
- A hozzászóláshoz be kell jelentkezni
Vannak olyan példák is, amikor valóban a python a hülye, nem az, aki rosszul használja? Komolyan a python baja, hogy ha valaki egyszer programkód létére proporcionális betűtípussal nyomtatná könyvbe, akkor szar lenne a könyv? Véletlen se az a fasz, aki kódot nem fix széles betűvel szed, pláne, ha python könyv írására adja a fejét? Esetleg az, aki nem találja meg a code tagnak megfelelő cuccot az egzotikus weboldalában, vagy képtelen megtalálni az attach gombot a levelezőjében?
Tőlem éppen kint lehetne egyébként a balcici-jobbcici, engem nem zavarna, biztos szívatott is meg már életemben legalább annyiszor az indentálás, mint máshol egy fölös vagy egy hiányzó pontosvessző, de igazából ritka, mint a fehér holló (kivéve, ha undormány, gépelés közben gondolkozós spagetti esett ki a kezedből, de annak meg úgyis mindegy). Azt is tudom, hogy neked minden ilyen fáj, de azért megmosolyogtató látni, hogy bár abban mind egyetértünk, hogy kódot normálisan formázni alapvető elvárás (ami egyébként kb mindenhol úgy kezdődik, hogy meg ne lássunk \t-ket, mert ütünk), de ha a python ezt használja, akkor az pfujj gonosz rettenet az egész.
Azon meg szintén érdemes lenne elgondolkodnod / magadba nézned, hogy kiről mond mit az, hogy te úgy gondolod, hogy, "Miért? Mert önmaguktól szépen dolgozni képtelen/nem akaró (lusta, trehány) kódfaragóknak is sikerélményt akar nyújtani. Gondolom, a nyelv és a szintaxis megalkotója önmagából kiindulva csinálta ilyenre, amilyen..." nem úgy, hogy pl azért ilyen, mert úgyis mindenki így kódol in practice.
- A hozzászóláshoz be kell jelentkezni
Van egy rossz hírem: fel kell venned a listába a nim programozási nyelvet is. :-)
- A hozzászóláshoz be kell jelentkezni
Most kezdtem el tanulni a python3-at.
Ennyi.
Megformaztam.
- A hozzászóláshoz be kell jelentkezni
A Pythonnal újonnan ismerkedőknek mindent megbocsátunk:-) Meg egyébként is, gyakorlatilag még karácsony van...
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Nyitnék egy másik ágat: általában ezt tekintjük jó she-bang-nek? Kezdve ott, hogy pl. FreeBSD-n /usr/local/bin/python az elérési útvonala. Ráadásul itt (és tudtommal nagyon sok Linux terjesztéseben is) az alapértelmezett Python még mindig a 2-es. Azaz a napokban valakinek én pont azt magyaráztam, hogy ha neki explicit Python3 kell, akkor melegen javasolt ezt írni.
#! /usr/bin/env python3
*Szigorúan* szerintem ez lenne a helyes.
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
- A hozzászóláshoz be kell jelentkezni
Igen. A shebang-ben meg kell adni az elérési utat, viszont nem tudhatjuk biztosan hogy a python hol van. Az env mindig ugyanott van, és a PATH segítségével elindítja a pythont.
Szerk.:
Rosszul fogalmaztam; természetesen tudhatjuk, hogy hol van a python vagy a python3, csak ha nem kell törődnünk az elhelyezkedésével, akkor jól jön az 'env'.
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Válasz a Szerk-re: te tényleg biztos vagy benne látatlanban, hogy mondjuk az AIX-es / HP-UX-es / Kiskutyafüle Linux disztrós / Anyámkínja BSD-s környezetről tudod, hogy hol a Python3?
Mert amíg csak én futtatom ezt a kódot a saját, jól ismert környezetemben, addig OK, nade abban a pillanatban, ha más is a sajátjában ...
Szóval *szerintem* nem kell a Szerk.
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
- A hozzászóláshoz be kell jelentkezni
Persze, igazad van.
Egyébként Androidon a Termux-ban még az 'env' is máshol van, ezért van egy termux-fix-shebang parancs, ami a desktopról átmásolt scriptben módosítja a shebang-ot.
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
*Szigorúan* szerintem ez lenne a helyes.
Vagy barmi a temaba vago sztenderd referencia abrarol :) Plusz tetszoleges mennyisegu virtualenv... atlagosan 2-3 per Python Pistike.
- A hozzászóláshoz be kell jelentkezni
mukodik ez egyatalan es python3 ez egyatalan? az a print kicsit mast mutat. bar hol igy, hol ugy hasznalod..
- A hozzászóláshoz be kell jelentkezni
Szerintem python2. Az újabbak elfogadják a zárójeles print-et is.
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Szerintem sem mukodik igy python3 alol. Szerencsere 2-est hasznal, csak o hiszi 3-nak.
--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin
- A hozzászóláshoz be kell jelentkezni
erre sem vennek merget, van ott print() is, de future print_function import nincs
es semmikepp nem neveznem a kettes hasznalatat 'szerencse'-nek :)
- A hozzászóláshoz be kell jelentkezni
Ez nem szükséges egy ideje: "import future print_function"
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
akkor ma is tanultam valami, de szerencsemre nincs hol kiprobalnom :)
ps.: par honapja meg volt egy wheezy virtualom pysparkhoz, ott gyakran belefugottam abba, hogy print()-et hasznaltam future import nelkul, szova is tette.. virtualt mar lecsereltek, ott meg talaltam python2-t es tenyleg nem kell mar a future import, kosz az infot
- A hozzászóláshoz be kell jelentkezni
A „from __future__ import print_function” arra kell, hogy pont ugyanúgy működjön, mint a python 3.x alatt. Tehát enélkül, egyes esetekben nem ugyanazt az eredményt kapod 2.7 és 3.x alatt.
- A hozzászóláshoz be kell jelentkezni
Ezt én sem tudtam (de valójában csak 3-ast használok).
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Amikor elkezdtem az ismerkedést a Pythonnal, akkor olvastam a különbségekről a 2-es és a 3-as között, és akkor találkoztam vele. Aztán valamiért nem felejtettem el. :-)
- A hozzászóláshoz be kell jelentkezni
nem, hogy nem ugyanazt kapod de nem is mukodik, azaz mukodott, ahogy kantal kijavitott ;)
- A hozzászóláshoz be kell jelentkezni
Én a Python 2.7-ről olvastam, hogy ott működött/működik. Igaz, én is a 3-ast használtam, így viszont nincs gyakorlati tapasztalatom. A 2.7-tel úgy találkoztam csak, hogy egy kicsit patch-eltem az mpdlcd kódját.
A könyvjelzőim között ezt találtam: https://www.python-course.eu/print.php
- A hozzászóláshoz be kell jelentkezni
python2:
print "valami" # mukodik, python3 megjelenese elott ez volt syntax
python3:
print("valami") # mukodik, uj syntax(nem csak syntax de az a lathatobb)
python2 a harmas megjelenese utan (python3 syntax):
from __future__ import print_function
print("valami") # mukodik
python2(fogalmam sincs miota, de nem mukodott azonnal a harmas megjelenese utan):
print("valami") # mukodik
viszont python3:
print "valami" #nem mukodik
igy a topicnyito scriptje is gyanus hogy python3 alatt futna
tehat python3 visszafele nem kompatibilis
regebbi python2 verziok az import print_function nelkul nem tudtak a print()-et
- A hozzászóláshoz be kell jelentkezni
Én konkrétan a 2.7-esről írtam. Te konkrétan melyik verzióról írsz? Mert általánosságban is vitatkozhatunk, csak úgy semmi értelme a dolognak.
„python2(fogalmam sincs miota, de nem mukodott azonnal a harmas megjelenese utan):”
Sehol sem írtam, hogy azonnal. Sőt az időtényezőről egyáltalán nem nyilatkoztam. De ez késés nem meglepő, mert a python 3-as megjelenése után nyilván kellett egy kis idő, amíg a 2-es ágba is bekerült. Viszont a fentebb linkelt oldal sem ma született.
Egy kis google után: A Python 3.0 2008 decemberében jött ki, a Python 2.7 pedig 2010 júliusában. Tehát kb. másfél év után jelent meg a print függvény a 2-es ágban. Ez tényleg nem azonnal volt, de már nyolc éve, amire már mondhatjuk, hogy a 2.7-ben már régóta működik.
- A hozzászóláshoz be kell jelentkezni
Működik, de mást fog kiírni néhány esetben, ezért kell a from __future__ import print_function.
$ python3
Python 3.7.2rc1 (default, Dec 12 2018, 06:25:49)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print ("alma", 3)
alma 3
És python2-vel:
$ python2
Python 2.7.15+ (default, Nov 28 2018, 16:27:22)
[GCC 8.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print ("alma", 3)
('alma', 3)
>>> from __future__ import print_function
>>> print ("alma", 3)
alma 3
Egyébként a Python2 szintaktika nálam főleg a pypy miatt játszik, mert a legtöbb disztribúcióban kizárólag pypy2 érhető el alapból. A fenti pypy2 esetén is ugyanígy.
További jelentős szivatás egyébkén az integeres osztás.
$ pypy # vagy python2
Python 2.7.13 (6.0.0+dfsg-3, Nov 03 2018, 15:04:50)
[PyPy 6.0.0 with GCC 8.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>> 5/2
2
>>>> from __future__ import division
>>>> 5/2
2.5
- A hozzászóláshoz be kell jelentkezni