Hogy olvasok így Pythonban?
Egy mentés - betöltés funkciót csinálok a szöveges játékomnak és egy picit elakadtam.
A mentésem így néz ki:
with open('alap_save.txt', 'w') as file:
...file.write("" +pNev+ "\n" +str(pKaszt)+ "\n" +str(pEro)+ "\n" +str(pElet)+ "\n" +str(pUgyesseg)+ "\n" +str(pErtelem)+ "\n" +str(pStamina)+ "\n" +str(pCelzas)+ "\n" +str(pPenz)+ "\n" +str(pSzint)+ "\n" +str(pExp)+ "\n" +str(kepesPont)+ "\n" "")
...file.close
A mentés után a txt tartalma ez:
Inid
1
12
550
5
1
25
1
2
4
199
1
Miként tudnám megoldani azt, hogy a beolvasás után is a megadott változóhoz a megfelelő érték társuljon?
Mentés sorrendje:
pNev
pKaszt
pEro
pElet
pUgyesseg
pErtelem
pStamina
pCelzas
pPenz
pSzint
pExp
kepesPont
Ha jol remlik van ini irasi es olvasasi tamogatas az alap Python libben is.
Haszanld azt, jobban jarsz.
file.write("" +pNev+ "\n" +str(pKaszt)+ "\n" +str(pEro)+ "\n" +str(pElet)+ "\n" +str(pUgyesseg)+ "\n" +str(pErtelem)+ "\n" +str(pStamina)+ "\n" +str(pCelzas)+ "\n" +str(pPenz)+ "\n" +str(pSzint)+ "\n" +str(pExp)+ "\n" +str(kepesPont)+ "\n" "")
Ez borzasztó átláthatatlan. Ne.
Egyetértek az előző válaszolókkal, ebből hosszú távon csak baj lehet.
De hogy a konkrét kérdésre is válaszoljak, elképzelésem sincs miért nem sorrendben menti le, ha egy stringbe írod először, és a stringet mented le gyanítom működni fog. Valahogy így
mentes = "sok atlathatatlan marhasag"
file.write(mentes)
file.close
Én egészen biztos, hogy egy dictionary-ben tárolnám az adatokat, és json formátumban menteném el, ahonnan nagyon egyszerűen lehet visszaolvasni és így az értékek címkéi is megmaradnak miközben nem kell vesződni a beolvasással.
A sorrenddel a txt-ben nincs gond.
Amikor beolvasok, akkor a kapott értéket szövegként értelmezi és nem számokként.
Miként oldható meg, hogy számként értelmezze őket? kiv. a pNev (Inid)
Azért a with kulcsszóval nyitod meg hogy a végére ne kelljen close()-t tenni.
Int -> String
str(1234)
String -> Int
int("1234")
Én személy szint azt ajánlom hogy a pickle modult használd. Le tud menteni egy objektumot, majd visszatudja olvasni a fájlból. A mások által írt JSON is jó.
* * * Mentés: * * *
data = (pNev, pKaszt, pEro, pElet, pUgyesseg, pErtelem,
. . . . pStamina, pCelzas, pPenz, pSzint, pExp, kepesPont)
with open("alap_save.txt", "wb") as f:
. . pickle.dump(data, f)
* * * Beolvasás: * * *
with open("alap_save.txt", "rb") as f:
. . data = pickle.load(f)
(pNev, pKaszt, pEro, pElet, pUgyesseg, pErtelem, pStamina,
. . pCelzas, pPenz, pSzint, pExp, kepesPont) = data
Szóval én továbbra is két dolgot ajánlanék megfontolásra: ezek annyira összetartozó változók, hogy egyszerűsíti a kódot, ha egy dictionary-ben tárolod. Bármit csinálni akarsz velük, egy objektumként tudod kezelni őket, és perszer akármelyik értéket bármikor el lehet érni. Továbbá a JSON megoldást azért javaslom a pickle-lel szemben, mert a JSON egy szabvány adat formátum, ha úgy alakul, bármilyen nyelven írt programmal el lehet érni, illetve mivel txt-ben van elmentve, editorral simán lehet módosítani.
Itt egy egyszerű implementáció, ami bemutatja, hogy hogyan érdemes ezt csinálni: http://pastebin (pont) com/NGHdL8X8
Egyébként így néz ki a JSON mentés:
{"pErtelem": 1, "kepesPont": 1, "pSzint": 4, "pKaszt": 1, "pEro": 12, "pNev": "Inid", "pExp": 200, "pElet": 550, "pCelzas": 1, "pStamina": 25, "pUgyesseg": 5, "pPenz": 2}
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!