Python, melyik kifejezést keresem a probléma megoldására?
Djangonál van olyan,hogyha először beírod, hogy "migrate", akkor kiírja hogy pl "initial commit....", aztán ha készen van, lecseréli arra, hogy pl "initial commit..OK".
Ezt akarom megcsinálni egy saját programnál, hogy amikor létrehozza az adatbázist, betölti az XYZ fájlokat, stb, akkor kiírja azt, hogy "Creating database", aztán ha készen van, tegyen a végére egy "OK"-ot.
Órák óta keresem mi lenne ez, de egyszerűen nem jut eszembe a szó...
:DDDDDDDDDDDDDDDDDDDD
akkor másképp modnom:
print("Épp tortát szarok")
tortaszaras() <--- funkció
AMIKOR VÉGEZ A tortaszaras() FUNKCIÓ:
print("Épp tortát szarok .. kész") <--- Ez ezt csinálja:
Épp tortát szarok
Épp tortát szarok .. kész
Én azt akarom, hogy írja ki azt az adott sort, végez a feladattal és az előzőleg kiírt sor Végére okádja, hogy "kész" :D Így már érteni, vagy mivan? Ennyire nem volt világos az első két példában, hogy kiírja hogy pl "initial commit....", aztán ha készen van, lecseréli arra, hogy pl "initial commit..OK".?
Én sem teljesen értem.
A terminalba utoljára kiírt sort szeretnéd módosítani?
Ha igen, akkor nagyon egyszerű:
print("Creating database...", end="\r")
Később:
print("Creating database: OK.")
De ha nem akarsz változtatni sem a szövegen, csak hozzáírni, akkor meg annyi, hogy:
print("Creating database.", end=" ")
print("OK")
A #2-t még nem olvastam, amikor a #3-ast írtam.
Talán azért nem értettük, hogy mit szeretnél mert egy "kifejezésen" és egy "szón" gondolkozol.
igen, mert magát a kifejezést keresem, hogy az mi lenne. Ezért is hoztam fel példának, hogy pl django-nál is a migrate parancsot kiadva ezt csinálja, csak nem jut eszembe a kifejezés, "amit" csinál.
Egyébként nemrég találtam én is a end=" " megoldást, viszont ezzel annyi a gond, hogy nem írja ki az első printet, csak miután a kettő közti dolog végez.
tehát a
print("Creating database.", end=" ")
tortatszarok()
print("OK")
egybe kidobná, hogy "creatting database OK", amíg meg a funkció fut, addig nem írna ki semmit. A \r nem lenne rossz, viszont azt vettem észre, hogy mikor végez, akkor felülírja a kiírt sort. Tehát azt írja ki hogy Creating database, majd mikor végez, "OKeating database".
Egész poénos ez a kis baszakvás így du fél 2 óta XD
így:
print("Épp tortát szarok...", end="")
tortaszaras() <--- funkció
AMIKOR VÉGEZ A tortaszaras() FUNKCIÓ:
print("kész")
ha a printnek átadod az end=""-t akkor nem fog sort emelni, így a következö print ugyanabban a sorban folytatja
ha meg azt akarod, hogy írja ki az elsöt még mielött sort emelnél, akkor add át neki a flush=True-t
print("Épp tortát szarok...", end="", flush=True)
"magát a kifejezést keresem, hogy az mi lenne"
Ha arra gondolsz, hogy hogy kereshetnél rá Google-ben, akkor pl.:
python replace last/previous terminal line
"majd mikor végez, "OKeating database"."
Nézd meg újra, én hogy írtam a példát!
"viszont ezzel annyi a gond, hogy nem írja ki az első printet"
Akkor ott valamit elrontottál.
Tehát igazából a \r megoldás lenne a legjobb, viszont ha rövidebb az adott sor, pl "Creating database" amit először kiír, amire le kell cserélje az "Db created", akkor a Creating database szöveg csak első pl 10 karakterét írja át (amilyen hosszú a második string). pl: Creating database-ből lesz az hogy Db createdatabase ami már más probléma, de kezelni kéne elvileg minden lehetséges hibát.
Olyasmi mint mondjuk... Mondjuk az ilyen Unit Teszt.
Kiírja egy sorba, hogy "Testing connectivity", csinál valamit, majd a végére csapja, hogy " WORKING", aztán kövi sor "Making connection", csinál valamit, végére " DONE", stb... Imádom hogy nem jut eszembe az az egy kifejezés, ahogy ezt hívják :D
ha az end='\r' megoldást akarod használni, az is müködik, csak akkor az egész sort kell második printbe rakni
print("Éppen tortát szarok...", end="\r")
...tortaszarás
print("Éppen tortát szarok...OK")
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!