Kezdőoldal » Számítástechnika » Programozás » Python fájlból olvasás,...

Python fájlból olvasás, adatok eltárolása (?) 2010 maj emelt info www.oktatas.hu/pub_bin/dload/kozoktatas/erettsegi/feladatok2 010tavasz/e_info_10maj_fl.pdf

Figyelt kérdés

www50.z#ppyshare.com/v/sZAyoYjL/file.html


A zippyshareben a lentebbi kód található egy .py fájlban átláthatóbban.

====> # helyére i-t írj: tehát zippyshare


# Szóval egy sort így olvasunk be (leellenőriztem, hogy az első sort megjeleníti-e):

"""


with open ("eladott.txt","r",encoding="utf-8") as file:

line = file.readline().strip().split(" ")

print(line)

"""


"""

De amikor az egészet akarom beolvasni, es el akarom tarolni, akkor így csinálom rosszul:

"""


adatok = []

with open ("eladott.txt","r",encoding="utf-8") as file:

line = file.readline().strip().split(" ")

while line:

line = file.readline().strip().split(" ")

mydict = {"soldjegy":line[0],"distance":line[1],"ar":line[-1]}

print(mydict) # 0-tol kene indexelodnie

adatok.append(mydict)

# Elso problemam: Nem jelenik meg az első adat vagy az utolsó



# Ha egyesével írom, hogy

sor = fajl.readline()

print(sor)

sor = fajl.readline()

print(sor) ...

# Akkor az outputban BENNE VAN az első elem


# Ha for/while akkor vagy az első vagy az utolso elem marad ki, de a for azt a kettő sort hivatott ismételni:


for sor in file:

sor = fajl.readline()

print(sor)

# olvastam stackoverflowon hogy ez így van, de miért van így?


# Második probléma: Ha logikailag tobb sor tartozik ossze(mint jelen esetben), akkor azt hogy kell megoldani? Ilyenkor is lehet dictet csinálni?

# Az elképzelésem az volt, hogy 3 változó, mindegyikhez dict, és append-olás az adatok listába. De list out of index, meg aztán rossznak is tartottam.


"""

Szerintem a legegyszerűbb, ha dictként vannak eltárolva az adatok, és akkor feladatoknál könnyebb vele dolgozni. Ennek lehetnek hátrányai? Pl indexelés, amikor tobb sor adat van logikailag egyben.

Előre is köszönöm válaszodat! (Aki akar nyugodtan szidhat, hogy hülye kezdő vagyok, megszoktam :3)

"""


# Ti hogy csinálnátok? Köszönöm szépen a válaszodat előre is!



#érettségi #Python #Fájl olvasás
2020. dec. 2. 15:31
1 2
 1/11 anonim ***** válasza:
24%

"Ti hogy csinálnátok?"


Mi sehogy, mert nem nekünk adták a feladatot. Az érdemjegyet sem mi fogjuk kapni érte.

2020. dec. 2. 15:40
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:
Nagyon szellemes. Magamtól csinálom egyedül, informatika óra vagy fakt nélkül, úgy hogy videókból/w3schoolsról kell összeszűrnöm az információkat, és néha előfordul, hogy nem találok logikát benne/ nem értem. Köszönöm az érdemi válaszodat kedves úriember/hölgy programozó zseni, további szép életet. :)
2020. dec. 2. 16:04
 3/11 A kérdező kommentje:
Amennyiben valaki segíteni akar, szívesen várom válaszát.
2020. dec. 2. 16:07
 4/11 anonim ***** válasza:
100%

A 15. sorban beolvasod az első sort, aztán nem csinálsz vele semmit.

A 17. sorban beolvasod a második sort és azt már feldolgozod, ugyanígy a többit is.

Biztos ezt akarod? Az adatfájl ismerete nélkül nem tudok többet mondani.

2020. dec. 2. 16:09
Hasznos számodra ez a válasz?
 5/11 A kérdező kommentje:
Biztos ezt akarom. 95%os lett a közép infóm és sztem egész viszonylag gyorsan tanulok. Adatfajl mint maga definicio nem valami nehéz. Légyszives konkretabban ird le
2020. dec. 3. 14:09
 6/11 anonim ***** válasza:
100%

Ahogy #4-es írta:


line = file.readline().strip().split(" ")

# -- ez a line megy a kukába?

while line:

line = file.readline().strip().split(" ")

# -- ez már a második sor, itt kezded a dict-té alakítást

2020. dec. 3. 15:27
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:

#6

Az oké, de ha a loop előtt nem adom meg, hogy mi a line, akkor NameErrort kapok.

Ha while file: -t írok akkor meg tök jó lesz, csak IndexErrort kapok (az hiba, ha try expcept-tel simán tovább futtatom a programot?)

2020. dec. 3. 18:43
 8/11 anonim ***** válasza:

Ennyi kellene:

with open ("eladott.txt","r",encoding="utf-8") as file:

line = file.readline().strip().split(" ")

mydict = {"soldjegy":line[0],"distance":line[1],"ar":line[-1]}

print(mydict)

adatok.append(mydict)

2020. dec. 3. 19:22
Hasznos számodra ez a válasz?
 9/11 anonim ***** válasza:

Ha kódot akarsz mutatni, akkor kérlek tisztelettel hogy [link] -ot használj.


A while cikluson belül a "line = ..." sort rakd a ciklus végére, miután feldolgoztad az előzőleg beolvasott sort. Most beolvasod az elsőt, belépsz a ciklusba, majd rögtön beolvasod a második sort.


Viszont: nekem ez így végtelen ciklus, mert a file végén a beolvasott sor "" lesz, ha erre ráeresztem a .split(" ")-et, akkor [""] marad, azaz egy 1 elemű lista, ami a ciklus kiértékelésénél True lesz. Ez így a végtelenségig ismételgeti magát. Szóval a line változó legyen csak simán file.readline().strip(), csak később, a dictionary készítésénél darabold fel a split(" ")-tel.


Második problémára: csinálhatsz két dict-et, line1 = f.readline().strip() és line2 = f.readline().strip() , rögtön két összetartozó sort olvastál be "egyszerre". Így már bepakolhatod őket egy dictionary-be.

2020. dec. 4. 11:53
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:

Miért while ciklust használsz? Elég régóta dolgozom Pythonnal, de még sosem láttam file beolvasásra.


Szerintem ez a kanonikus megoldás: [link]


"Második probléma: Ha logikailag tobb sor tartozik ossze(mint jelen esetben), akkor azt hogy kell megoldani? Ilyenkor is lehet dictet csinálni?"

Ez mit jelent egész pontosan? Ha az input file több sora tartozik egy rekordba? Ezt úgy oldanám meg, hogy a mydict-et bővíteném minden sor beolvasásakor, és egy feltétellel eldönteném, hogy véget ért-e a rekord. Ha igen, hozzáadnám a listához és kiüríteném a mydict-et. (ilyenkor persze a mydict-et a loopon kívül kell definiálni.) De itt a megoldás attól fog függeni, hogy milyen az adat.


Egy loop-on belül be lehet olvasni két sort, ahogy fent írták, de szerintem nagyon rossz ötlet, mert mi van, ha nem minden rekord 2 soros, vagy vannak 3 soros rekordok is?

2020. dec. 4. 13:41
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!