Új hozzászólás Aktív témák
-
KEAN
tag
válasz AeSDé Team #1398 üzenetére
Én is csak azt tudom mondani, hogy a PyCharm-nál jobbat nem fogsz találni, elvileg támogatja az összes általad írt funkciót. Én ugyan Eclipse + PyDev kombót használok, de én régi motoros vagyok és nehezen váltok, de tervben van már, hogy belakom magamnak a PyCharm-ot is, mert egyértelműen jobb. Kisebb projektekhez meg a Notepad++-nál nincs egyszerűbb választás.
"Persze, hogy tudtam, csak nem sejtettem!"
-
AeSDé Team
őstag
Köszi, közben újra nekiestem az IDE-nek és megtaláltam 1-2 dolgot.
Bizonyos nagyon alap metódusoknál (pl. print) Ctrl+Space hatására tényleg kiegészít, van ahol viszont nem szeretne. Például a következő kódban:
[példa]16. sor: ha nem adok meg konstruktor paramétert, fogalma sincs, hogy oda egyébként kellene egy.
Illetve van neki, sárga aláhúzás, meg "Parameter 'number' unfilled...", de amikor ott állok a kurzorral akkor ezt nem lehetne valahogyan jelezni?17. sor: dettó
17. sor: ha megadok egy paramétert, nem kínálja fel azt, hogy annak a metódusnak vannak más paraméterei is, csak éppen van default értékük.19. sor: előbbi hiba, szintén nem kapok tájékoztatást arról, hogy milyen lehetőségeim lennének a random.randrange() paraméterezésére. NetBeans alatt például megkapnám a komplett listát arról, hogy milyen paraméterezéssel hívhatnám meg az adott metódust.
Ez pedig számomra hatalmas segítség, főleg akkor amikor ismeretlen objektumokkal van dolgom és fogalmam sincs arról, hogy még 5 féle módon tudnám paraméterezni az adott objektumot, csak éppen az IDE nem tájékoztat róla.
Nagyobb projekteknél pedig szerintem nem várható el, hogy én minden paraméterlistát ismerjek, vagy állandóan ott legyen előttem az összes osztály dokumentációjával.[ Szerkesztve ]
-
cousin333
addikt
válasz AeSDé Team #1402 üzenetére
A Pycharm tudja mindazt, amit hiányolsz, de persze nem Netbeans-nek hívják, ezért máshogy működik.
16/17. sor: amint kiteszem a nyitó zárójelet (na jó, némi késéssel), kiírja a lehetséges paraméterek listáját, akárcsak a függvényhívás. Vagy Ctrl + P.
Mindkettőnél bekapcsolható, hogy a lista folyamatosan látszódjon. Ctrl + Shift + A után:
19 sor ugyanezt használhatja, de ha nem vagy biztos magadban, akkor Ctrl + Q és megkapod a hozzá tartozó dokumentációt, amit ki is tűzhetsz magadnak:
Remélem segítettem.
[ Szerkesztve ]
"We spared no expense"
-
Pé
senior tag
Sziasztok
egy olyan problémám lenne, hogy van egy stringem :line = "egy logfileból beolvasott sor "
és ezt a változót bele kéne illesztenem egy system parancsba méghozzá ilyen formátumban :
os.system( 'parancs.exe "Argument1='változó' " ')
tehát a {változó} helyén kéne a {line} nak állnia. Próbáltam már mindenféle szimpla, dupla, ilyenolyan idézőjelekkel, zárójellel, de semmi.
Valami ötlet ?
Köszi -
KEAN
tag
Hali,
több megoldás is lehet, én így hirtelen ezzel próbálkoznék:os.system('parancs.exe Argument1="{}"'.format(line))
Az idézőjelekkel még lehet, hogy játszani kell egy kicsit, ez a parancs.exe működésétől függ, de remélem a lényeg érthető.[ Szerkesztve ]
"Persze, hogy tudtam, csak nem sejtettem!"
-
EQMontoya
veterán
Valami ilyesmire lesz szükséged:
/bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
args = shlex.split(command_line)
print args['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
p = subprocess.Popen(args) # Success!
Az fontos, hogy popen hívásnál NEM textként, hanem listaként adjuk át az argumentumokat, mint a példában látható.
Same rules apply!
-
#82595328
törölt tag
Olyan kérdésem van, hogy lehet-e olyan if-elif szerkezetet csinálni, aminél az if-elifek száma változó.
Egyszerű példa bekérek egy számot mondjuk:adj meg egy számot: mondjuk 100
egy másik változóban bekérek intervallumokat (1-10, 10-20, 50-100, 100-1000), de ezeknek az elemek száma változhat.A program váza így nézne ki:
for i in bármi - Az mindegy hányszor fut le a for ciklus.
if szám in intervallum1
parancsok1
elif szám in intervallum2
parancsok2
....
elif szám in intervallumn
parancsoknVan ötletem, hogy csinálnám meg. Az if-et beraknám egy for ciklusba az intervallum számát változóból illesztem be, azaz annyiszor futna le a for ciklus, amennyi eleme van a változónak. De hátha valaki csinált már ilyet, vagy jobb ötlete van.
[ Szerkesztve ]
-
-
axioma
veterán
válasz #82595328 #1410 üzenetére
Hat en itt mar azt nem ertem, hogy a
parancsok_i
hogyan allna elo, ha semmi korlat nincs a darabszamra.
Masreszt egyaltalan, a parancsok is leirhatoak azi
fuggvenyeben?
Egyebkent igen, lepj ki a szamlalos for ciklus gondolkodasbol,for x,y in intervals:
kell neked.[ Szerkesztve ]
-
justmemory
senior tag
válasz justmemory #1411 üzenetére
Bocs, lejárt a szerkesztési idő...
Mármint az intervallumok darabszámára nem kellene a lista esetében külön változó, mert ha fontos, akkor azt a
len(lista)
megadja.
Pl.:szam = 100
lista = []
# Ha mondjuk 4 intervallumot kérsz be, akkor pl.:
for i in xrange(4):
lista.append(intervallum) # Értelemszerűen stringben kell bekérni, különben ki fogja vonni egymásból a két számot...
# Ezt követően fog a listád úgy kinézni, hogy:
lista = ["1-10", "10-20", "50-100", "100-1000"]
for intervallum in lista:
if szam in intervallum:
parancs1 # Ha kifejezetten fontos, hogy éppen melyik intervallumban jár, akkor nyilván arra is figyelni kell.--- Imprisoned, inside this mind... --- Joined at the soul with a pair of headphones ---
-
#82595328
törölt tag
Pedig az tök egyszerű.
Az intervallum változó nem úgy nézne ki, hanem valahogy így
((intervallum1, hozzátartozó érték1),(intervallum2, hozzátartozó érték2),..(intervallumn, hozzátartozó értékn))
Innen már gondolom egyértelmű, hogy bármennyi elem esetén lesz külön parancs.for x,y in intervals: sajnos fogalmam sincs, hogy tudnám használni
-
#82595328
törölt tag
válasz justmemory #1413 üzenetére
Azt hiszem nem voltam egyértelmű, nem én adom meg, hogy hány elem lesz a listában. Grafikus felületen szeretnék egy űrlapot (kb. egy 2 oszlopos táblázat), aminek tetszőleges számú sora lehet.
for i in xrange(4):
lista.append(intervallum)Tehát ez biztos nem jó nekem.
for intervallum in lista:
if szam in intervallum:
parancs1Igen, ilyesmire gondoltam, csak lesz még egy for ciklus. Ami megmondja, hogy az egész hányszor fusson le.
Köszönöm!
Tehát a programrészlet valahogy így fog kinézni:for i in range(szam-x):
for intervallum in lista:
if szam in intervallum:
parancs1[ Szerkesztve ]
-
justmemory
senior tag
válasz #82595328 #1416 üzenetére
Értem...
Egyébként nem kell ámfor
ciklussal hozzáadni, ez csak egy lehetőség volt a részemről, mert nem tudtam hogyan szeretnéd A listához bármilyen formában, bármikor hozzá lehet adni, nem kell a ciklus...--- Imprisoned, inside this mind... --- Joined at the soul with a pair of headphones ---
-
axioma
veterán
válasz #82595328 #1415 üzenetére
1. ja hogy a listaval kapsz egy intervallumhoz tartozo argumentumot is, amit megadsz az egy darab parancsnak, igy mar ertem
2. az afor x,y in intervals:
nalam mar egy koztes lepes utani: az intervallum also es felso hatara mint tuple (vagy list) gondoltam hogy johet a feluletrol, nem csak 9-15 formaban (bar az se gond, mertmap(int,intervalstring.split('-'))
atalakitja. Tehat ha igy jon be, hogyintervals=[(1,5),(6,8),(9,15)]
vagyintervals==[[2,3],[4,6],[7,11],[12,15]]
akkor igy irnam le a felteteled:for i in xrange(szam-valami):
for x,y in intervals:
if x<=i<=y:
parancs()
Sot, ha tudod hogy a kulso ciklus mindig minden intervallumon vegigmegy, sztem ez egy sokkal robosztusabb kod:for x,y in intervals:
for i in xrange(x,y+1):
parancs()Igaz, ebbe most nem kombinaltam bele, hogy plusz jon a hozza tartozo ertek, de akkor lehet az
x,y,ertek
harmasa mint tuple/list az egy listaelem, es akkor azertek
-et irod a parancs() argumentumanak. -
#82595328
törölt tag
Igazából az intervallumokat én így akarom megadni:
intervals = (2,4,7,12)
Az egyes intervallumokat a változó egymás utáni elemeiből rakom össze (2-4,4-7,7-12), így kevesebb adat kell, relációkkal kezelem az átfedést.
azaz
if változó > intervals[0] és változó <= intervals[1]
parancsok
if változó > intervals[1] és változó <= intervals[2]
parancsok
Ez for ciklussal is menni fog, hiszen csak léptetnem kell a változó elemeit. Szerintem ez már menni fog.Persze simán át lehet alakítani ezt (2,4,7,12) erre (2-4,4-7,7-12) akkor ez is működhet.
for x,y in intervals:
for i in xrange(x,y+1):
parancs()De ez nekem még új. Majd kipróbálom.
Köszönöm a tippeket! Azt hiszem innen már elboldogulok.
[ Szerkesztve ]
-
user112
senior tag
Sziasztok!
Tudnátok segíteni Pmw-vel kapcsolatban (2.0.0)?
Installáltam (Anaconda3), de mindig hibára fut:AttributeError: module 'Pmw' has no attribute 'initialise'
például ennél a sornál:
ablak = Pmw.initialise()vagy egy mintapélda soránál:
Pmw.initialise(root) -
K1nG HuNp
őstag
Ugye:
lista = [(nev, sorszam, valami) for (nev, sorszam, valami) in adatok if sorszam == 2]
és
lista = []
for nev, sorszam, valami in adatok:
if sorszam == 2
lista.append(nev, szorszam valami)megegyeznek?
ez is hasonló a def és a lambda esethez nem?
[ Szerkesztve ]
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
cousin333
addikt
válasz K1nG HuNp #1422 üzenetére
Az eredményt tekintve megegyeznek. A technikai hátteret nem ismerem, de a list comprehension (az első megoldás) nem csak szebb és kompaktabb, hanem valamivel gyorsabb is. A disassembly jelentősen különbözik, de az első esetben van egy függvényhívás, aminek a hossza nem ismert.
ui: Nyilván a második példád helyesen:
lista = []
for nev, sorszam, valami in adatok:
if sorszam == 2:
lista.append((nev, sorszam, valami))Szerintem a fentiek igazak a második esetben is, a
lambda
javára.[ Szerkesztve ]
"We spared no expense"
-
válasz cousin333 #1423 üzenetére
Sziasztok!
Python OOP esetében melyik könyvtárat érdemes HTTP kérések lebonyolítására használni? aiohttp-t, vagy requests a gyorsabb/jobb/megbízhatóbb?
Úgy vettem észre, hogy egyébként az aiohttp gyorsabb futást eredményez...
Szerk:
Bocs, nem válasz akart lenni!
[ Szerkesztve ]
Hogy hívják az éhes horgászt? Gyere Pista, kész a kaja!
-
-
Pulsar
veterán
Sziasztok,
hobbi programozó vagyok, és egy egyszerű if kicsit megakasztott, amit nem értek miért nem megy, ebbe kérném a segítségeteket.
Két értékem van
Az egyiket sql-ből olvasom ki a másikat pedig egy try except eredménye adja
a previous_status() jön az sql-ből, értéke 1 vagy 0 lehet,
a test() pedig a try except-ből szintén értéke 1 vagy 0 (try 1, except 0)
idáig nincs is gond, mert szépen kiírja az értékeket a printwhile shutdown() != "3":
print test()
print previous_status()
if test() == "1":
if previous_status() == test():
time.sleep(300)
else:
print "megy"
status_update(ok)
time.sleep(300)
if test() == "0":
if previous_status() == test():
time.sleep(300)
else:
print "nem megy"
status_update(nok)
time.sleep(300)A test() értéke jelenleg mindig 1.
és itt jön a gond, hogy a previous_status() 1 akkor is lefut az else, és akkor is ha az értéke 0 akkor is.
De miért?
Már kitéptem minden hajam[ Szerkesztve ]
-
Pulsar
veterán
Meglett a hiba.
A previous_status es a test fügvenyek visszaterési éréke nem volt azonos. return int(ertek) és jo lett -
sonar
addikt
Ha már formázás a pep8 egyértelműen meghatározza, hogy mit merre hogyan. Mindent nem lehet fejben tartani, de vannak jó kis tool-ok amiket ha ráeresztesz a kódra akkor adnak infót, hogy mi az ami stílus idegen.
pep8online.com - én legtöbbször itt ellenőrzöm a formázást.
A végén tényleg szép és olvasható kód leszA tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
axioma
veterán
Igaz, hogy me'lyse'gben is ajanlott az embernek korlatoznia magat, de a 4 szokoz mint alap ajanlas nekem attol teszi nehezze olvasni, hogy erezhetoen egyre rovidebb sorokba kene beferni kommenttel egyutt (ha a sorhoz tartozik), ahogy egyre bentebbi szintrol van szo. A blokk beazonositasa meg azert mar nem olyan nagy problema ma mar, mint amikor a vi volt a prog.iras alapja...
-
sonar
addikt
A sorhossz limit nálam is gond szokott lenni, főleg ha van egy összetett SQL lekérdezés. (az ilyen warn-ingokat ignorálom) De alapvetően igyekszem betartani az ajánlásokat.
Szerintem ha vki igényes akkor szánjon időt a formázásra is.
Mostanában nem kódolok sokat, de ha ránézek egy összetett kódra azért abból látszik sokszor, hogy mire számitson az ember...
Falra tudnék mászni, mikor össze vissza vannak kommentelve a dolgok, idébb odébb egy-egy tab befigyel...
spacek minden fele..., meg az idióta változó nevektől, össze vissza kis és nagybetükkelA tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
axioma
veterán
En egyfelekeppen, azon belul szabalyosan formazok, csak az ajanlasokbol nem mindent tartok be. A fix behuzast igen, de nem 4-gyel, hanem 2-vel. Valtozokat ertelmesen. De azt peldaul sose ertettem, miert jo a relacios jelek korul plusz space-eket hagyni... en tomenyebben irom, ebben a Python plane jo partner [munkailag java-s vagyok, sokkal szoszatyarabb].
Termeszetesen, ahol kell, alkalmazkodom. Sot, szoftver karbantartaskor, bar nem vagyok rakenyszeritve, de ha a kod kozepebe kell beleirnom, akkor az ott aktualis stilust kovetem. Ha kulon osztaly vagy meretesebb fuggveny, akkor mar inkabb a sajatom. Ennek mar nem ront a minosegen, elottem is tobben es tobbfelekeppen irtak egyes reszeit... -
válasz EQMontoya #1427 üzenetére
Köszönöm!
Végül mégis az aiohttp clientjét használtam, s nem bántam meg. Nagyon jól dokumentált, funkciódús dolog. Tökéletes a feladatra. Egy dolog hiányzik még, az pedig a timeout. Jelenleg az asyncio wait_for-ját használom, ami teszi szépen a dolgát, de érdekel, hogy lehet-e ezt valahogy "szebben" megoldani. Néztem a doksit, de nem találtam egyelőre erre vonatkozó információt.
Hogy hívják az éhes horgászt? Gyere Pista, kész a kaja!
-
Vesporigo
aktív tag
Szeretnék egy emailhez csatolmányokat hozzáadni. Definiáltam 3 csatolmányt (attach1, attach2, attach3).
Valahol olvastam, hogy így is csatolhatom őket a levelemhez egyszerre:
csatolmany = attach1 + attach2 + attach3
sendMail(TO, "Statusz", BODY, csatolmany)Mit gondoltok, ez a csatolmány összefűzős megoldás működőképes? (Bocsi a buta kérdésért, még sosem írtam ilyet több csatolmánnyal.)
-
justmemory
senior tag
válasz Vesporigo #1441 üzenetére
Nem írtad, hogy milyen modult használnál ehhez... Én python-t sosem használtam még ilyesmire, de csak gyorsan rákeresve azt találtam, hogy az itteni 3. példa szerint egy sima for ciklussal lehet hozzáadni több csatolmányt. De mondom, nem tudom, sosem próbáltam; hátha jön majd valaki, aki már igen...
--- Imprisoned, inside this mind... --- Joined at the soul with a pair of headphones ---
-
Vesporigo
aktív tag
válasz justmemory #1442 üzenetére
Smtplibbel szeretném küldeni.
Igazából már megvan a 3 csatolmány, 3 különböző könyvtárból hozom el őket, csak szeretném mindhármat csatolni ugyanabba a levélbe.Az érdekelne, hogy ebben az esetben hogyan hivatkozhatok a több csatolmányra a sendMailben.
A másik megoldás, ami eszembe jutott, ez lenne:
sendMail(TO, "Statusz", BODY, ['attach1','attach2','attach3'])
Vagyis az előzővel ellentétben itt nem fűzném össze a fájlokat, hanem egyenként hivatkoznék rájuk.
Melyik megoldás lehet működőképes?
Nincs szükségem for ciklusra, mert a fájlokat definiálom, mikor elhozom őket különböző könyvtárakból. -
KEAN
tag
válasz Vesporigo #1443 üzenetére
Szia,
ez a
sendMail
függvény honnét jön? Megnézve az smtplib doksiját teljesen más asendmail
szintaxisa. A fentebb linkelt oldalon tök jól le van írva, hogy mit is kellene csinálnod. (Létrehozni egy MIMEMultipart objektumot és ahhoz azattach()
függvénnyel hozzáadogatni a csatolmányokat, ha 3x, akkor 3x meghívva azattach()
-ot.)
... vagy valamit nagyon nem értek."Persze, hogy tudtam, csak nem sejtettem!"
-
kezdosql
tag
válasz velizare #1372 üzenetére
Koszonom mindenkinek!
Igen, ok se gondoltak komolyan, ahogy azt mondtam, hogy megoldhato, kossuk meg a szerzodest, azonnal kodde valtak.
Nekem mar eleve a "telefonomon futott" dolog gyanus volt, nyilvan nem ott fut, csak a kepernyokepet viszi at, azt is erosen lebutitva.
-
Vesporigo
aktív tag
Végül megoldottam a problémát.
A sendMail függvény szintaxisa a következőképpen nézett ki:def sendMail(to, subject, text, files=[])
Aztán az előre definiált csatolmányokat így tudtam hozzáadni:
sendMail(TO, "Statusz", BODY, attach1 + attach2 + attach3)
Nekem ez tűnt a legegyszerűbb megoldásnak, mivel amikor elhoztam a szerverekről a későbbi csatolmányokat, egyúttal változóként definiáltam őket, így már csak össze kellett őket fűznöm. Kb 3 napig böngésztem a netet megoldás után kutatva, de mind bonyolultabbnak tűnt.
Köszönöm mindenkinek a segítséget!
-
Üdv!
Tudtok ajánlani aszinkron támogató Firebase könyvtárat?
Hogy hívják az éhes horgászt? Gyere Pista, kész a kaja!
-
Pulsar
veterán
Sziasztok,
try except
kérdésem lenne
Ha két feltétel van benne akkor mindkét feltételnek teljesülnie kell ahhoz hogy a ne fusson le azexcept
ág, vagy ha az egyik teljesül, de a másik nem, akkor lefut azexcept
?
(Bocsánat, ha hibásan fogalmazok, csak hobbi programozó vagyokTehát :
def olvasni():
try:
file = open(“testfile.txt”,”r”)
file1 = open(“testfile1.txt”,”r”)
akarmi = "1"
except:
akarmi = "0"
return akarmiItt mi történik ha file1 nem megnyitható?
vagy így a a helyes:def olvasni():
try:
file = open(“testfile.txt”,”r”)
akarmi = "1"
except:
akarmi = "0"
if akarmi == "1"
try:
file = open(“testfile.txt”,”r”)
akarmi = "2'
except:
akarmi = "0"
return akarmi -
justmemory
senior tag
Szia,
én úgy tudom, hogy ha a try-ban akármelyik feltétel nem teljesül, akkor már az except-re fog futni a dolog, magyarul ha a file1 nem nyitható, akkor error-t fog dobni.
Én egyébként lehet inkább így írnám (noha én is csak hobbista vagyok ):def olvasni():
try:
with open("testfile.txt”,”r”) as testfile, with open(“testfile1.txt”,”r”) as testfile1:
tartalom = testfile.readlines()
tartalom1 = testfile1.readlines()
amit_csinálni_akarsz()
akármi = "1"
except:
akármi = "0"
return akármiÍgy ha akármelyik fájlt nem tudja megnyitni, akkor az except-re fog futni.
A fenti módszer csak python 2.7 vagy afölötti verzióval működik, 2.6 és az alatt úgy kell, hogy:
try:
with open("testfile.txt”,”r”) as testfile:
with open("testfile1.txt”,”r”) as testfile1:[ Szerkesztve ]
--- Imprisoned, inside this mind... --- Joined at the soul with a pair of headphones ---
-
KEAN
tag
try ... except szerkezetben bármilyen hiba történik, akkor aktiválódni fog az except ág, szóval a kérdésedre a válasz igen.
Amúgy lehet "szűrni" a hibákra, ha különféle módokon akarod lekezelni őket. (Persze neked most mindkét parancs IOError-t dobna, szóval ezzel itt és most nem sokra mész...)try:
some_risky_thing
except KeyError:
do_something_with_keyerror
except IndexError:
do_something_with_indexerror(A fenti példában csak a két "nevesített" hibát kapjuk el, minden más hiba a program leálláshoz vezet vagy legalábbis traceback fog keletkezni.)
"Persze, hogy tudtam, csak nem sejtettem!"