pętla, pobranie wartości z pliku .txt

pętla, pobranie wartości z pliku .txt
ujyr81
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Witam.
Jako początkujący robię zadania między innymi z tej strony: https://www.practicepython.org/exercise/2014/12/14/23-file-overlap.html
Co by dobrze zrozumieć podstawy staram się robić ćwiczenia na więcej niż jeden sposób i mam problem.
Poniższy kod powinien wczytywać liczby z pliku .txt, i zapisać je do listy.
Dlaczego pomija co drugą liczbę?

f1_list = []
open_f1 = open('file.txt', 'r')
for n in open_f1:
open_f1.readline()
f1_list.append(int(n))

AR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
2

for n im open_f1 juz iteruje ci po każdej linii. Jak robisz readline to przeskakujesz do kolejnej ale nic z nią nie robisz. Usuń to readlines, a bedziesz miał listę ze wszystkimi liniami

SI
  • Rejestracja: dni
  • Ostatnio: dni
1

Wklejając kod korzystaj z tagu dostępnego pod </>, a z pliku tekstowego wczytuje się tak:

Kopiuj
tab = []
for line in open("wejscie.txt", "r"):
    tab.append(line)


print(tab)
ujyr81
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Dzieki za odp

BZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 66
1

Ponieważ w każdej iteracji pętli przesuwasz się o 2 linie po pliku. Najpierw przechodzisz do następnej linii w pętli for n in open_f1:, a potem do kolejnej wywołując open_f1.readline().
W tej pętli dzięje się takie coś:

  1. Wczytaj następną linie pliku i przypisz do zmiennej n
  2. Wczytaj następną linie pliku
  3. Dodaj n do listy f1_list

Po prostu usuń open_f1.readline() i będzie działać tak jak powinno. Poczytaj sobie jak działa funkcja readline i co to jest iterator w Pythonie.

  • Rejestracja: dni
  • Ostatnio: dni
1

Sugerowane na tej stronie rozwiązanie jest dalekie od optymalnego. Also, primenumbers.txt zawiera ekstra spację w co dziesiątej linii. Ktoś się nie przyłożył.

PL
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: kosmos
  • Postów: 47
0
sig napisał(a):

Wklejając kod korzystaj z tagu dostępnego pod </>, a z pliku tekstowego wczytuje się tak:

Kopiuj
tab = []
for line in open("wejscie.txt", "r"):
    tab.append(line)


print(tab)
Kopiuj
with open("wejscie.txt", "r") as f:
    tab = [line for line in f]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.