Kmom05, Punkt 9: All-kommandot - fastnat

  • Författare
  • Meddelande

Marielle

html-kodare

  • Inlägg: 15
  • Blev medlem: 13 aug 2017, 20:04

Kmom05, Punkt 9: All-kommandot - fastnat

Inlägg12 okt 2017, 15:27

Hej!

Jag har fastnat på punkt 9 i kmom05, suttit med det ganska länge.

Jag får inte riktigt till funktionen "all". Jag har försökt följa tipset "Tips, låt dina funktioner returnerar ett värde, spara undan resultatet i en dictionary och skriv ut i en egen utskriftsfunktion." Men jag förstår inte riktigt hur jag ska göra det. I mitt senaste försök fungerar det bara när man lägger i en funktion i min dictionary, lägger man till två får jag felmeddelandet "I/O operation on closed file", jag vet att det betyder att filen är stängd och jag inte kan göra något med den.

Jag har ingen aning hur jag ska lösa det med all-kommandet, det står helt still i mitt huvud.

Här är en del av min kod:
https://codeshare.io/5XKEbk
https://codeshare.io/5zgA8D
Användarvisningsbild

Zeldah

dbwebb

  • Inlägg: 500
  • Blev medlem: 02 mar 2016, 10:17

Re: Kmom05, Punkt 9: All-kommandot - fastnat

Inlägg13 okt 2017, 08:38

Det hade hjälpt om du visar hela felmeddelandet, så vi ser vilken rad det blir fel på också. Men vi gissar lite så länge.

analyze_file verkar vara ett fil objekt och i båda funktionerna, letters_counter och lines_counter, loopar du igenom filens innehåll. Filen verkar öppnas i någon kod vi inte ser, jag gissar att funktionerna letterSum är samma eller leder till letters_count funktionen och att du lyckas köra funktionen letters_count men får fel när du kör lines_counter.

Okej, analyze_file är öppnad när letters_count anropas och i den funktionen använder du den med "with" och loopar igenom filens innehåll. När loopen är klar och exekveringen lämnar "with blocket" stängs kopplingen till din fil automatiskt. Sen kallar du på lines_counter med samma analyze_file fil object men när vi kommer till "with" och loopen i denna funktionen är ditt fil objekt stängt och då kan vi inte loopa igenom den.

Sammanfattat är analyze_fil öppen när vi gör funktionsanrop till letters_counter och stängd när vi gör funktionsanrop till lines_counter, för att vi stängde den i letters_counter.

Hur fixar vi detta?
Ett sett är att du i all funktionen läser upp filens innehåll
Kod: Markera allt
file_as_list = analyze_file.readlines()
analyze_file.close() # får inte glömma stänga filen

Då skickar du file_as_list som argument till funktionerna istället för analyze_file.
Alternativt behöver du öppna analyze_file igen innan du kör lines_counter.
Kod: Markera allt
analyze_file = open(analyze_file.name)

Marielle

html-kodare

  • Inlägg: 15
  • Blev medlem: 13 aug 2017, 20:04

Re: Kmom05, Punkt 9: All-kommandot - fastnat

Inlägg13 okt 2017, 10:52

Tack för svaret! Jag har löst det!

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 10 gäster