Zapis liczb z pliku .txt do tego samego pliku w odwrotnej kolejności - utknąłęm.

0

Witam
zaczynam swoją przygodę z pythonem, aktualnie robie sobie proste zadanka z pętlami i innymi podstawami.
mam problem z zadaniem w którym mam plik tekstowy zawierający 20 liczb każda w nowej lini, i mam je wczytać do listy i zapisać w tym samym pliku tekstowym w odwrotnej kolejnosci.
Liste stworzyc z pliku mi się udało, teraz kombinuje zeby umiescic te liczby w tym pliku odwrotnie. probowalem funkcji readlines i cos mi to nie działa.
Oto mój kod:

i=0
tab=[20]
f=open("zad15liczby.txt", "rt")
line=f.readline()
while line:
  tab.append(line)
  line=f.readline()
  i+=1
f.close()
print(tab)

do tego momentu jest ok, wczytuje listę, następna część to próba zapisu liczb w odwrotnej kolejności, lecz to już mi nie wychodzi

f=open("zad15liczby.txt", "wt")
i=19
while i>=0
  f.write(tab)
f.close()

proszę o porady/wskazowki/rozwiazania. pozdrawiam.

0

Zobacz, ile zwraca len(tab) w pierwszym programie.
W drugim ta funkcja też może się przydać.
Zapisuj po jednym elemencie (chyba że odwrócisz kolejność elementów w tablicy i wtedy zapiszesz ją na raz).

0

Po kolei:

i=0
tab=[20]

Co to jest i po co to? Python to nie C/C++/Java, że trzeba podawać rozmiar.

f=open("zad15liczby.txt", "rt")


[KLIK](https://docs.quantifiedcode.com/python-anti-patterns/maintainability/not_using_with_to_open_files.html) + nie znam "rt". Albom ślepy, bo [tu](https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files) "t" nie widzę.

Początek rozwiązania:
```python
tab = list()# ładniejsze niż tab = []
with open ("plik", "r") as in_file:
    for line in in_file:
        tab.append(line.strip())#strip by pozbyć się zbędnych spacji
i=19
while i>=0
  f.write(tab)
f.close()```

Wyszła Ci nieskończona pętla.
Skoro masz listę, to operuj na niej nieco bardziej pythonowo:

for num in reversed(tab):
    operacja zapisu
0

Jak Możesz odwrócić tablicę w pamięci, to nie potzreba się przejmować długościa:

	tab = []
	f=open("zad15liczby.txt", "rt")
	line=f.readline()
	while line:
		tab.append(line.strip())
		line=f.readline()
	f.close()
	print(tab)
	tab = tab[::-1]
	print(tab)
	
	with open('zad15liczby.txt', mode='wt', encoding='utf-8') as my_file:
		my_file.write('\n'.join(tab))
1
with open("zad15liczby.txt") as f:
    lines = list(f)
with open("zad15liczby.txt", "w") as f:
    f.write('\n'.join(lines[::-1]))

1 użytkowników online, w tym zalogowanych: 0, gości: 1