Operacja na plikach, zapis

0

Siema mam zadanko Zad1. Napisz program, który wyświetli wszystkie liczby od 0 do 100 (plik liczby.txt) podzielne przez 12. Liczby te należy zapisać do pliku przez12.txt. Zrobiłem sobie plik ze 100 liczbami . W linii 10 wyskakuje błąd TypeError: not all arguments converted during string formatting

f = open("C:/Users/Rafał/Desktop/Python/liczby.txt")

#
# for x in range(101):
#     f.write(str(x) + " ")

fz = open("C:/Users/Rafał/Desktop/Python/przez12.txt", "w")
try:
    for x in f:
        if x % 12 == 0:
            fz.write(x)
            print(x)
finally:
	fz.close()
0

Wczytujesz dane z reguły jako string. Bo to dane z pliku...
W if'ie nie wystarczy czasem wpisać if int(x) ?

0

Powinno działać, Przejrzyj plik z liczbami czy wszystko OK:

with open("numbers.txt", 'r') as f:
	with open("out.txt", 'w') as o_file:
		for elem in f:
			if int(elem) % 3 == 0:
				o_file.write(elem)
0

ValueError: invalid literal for int() with base 10: '0 1 2 3 4 5 6 7 8 9 ... Plik z liczbami wygląda następująco 0 spacja 1 spacja ....

1

Aaa, Mogłeś tak od razu, to trzeba użyć split i readline:

with open("numbers.txt", 'r') as f:
	with open("out.txt", 'w') as o_file:
		a_gen = (x for x in map(int, f.readline().split()) if x % 3 == 0)
		for a in a_gen:
			o_file.write(str(a) + " ")

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