Witam, doradzi ktoś jak zapisać liczby do pliku ?
mam np. type(a) = float64 i chciałbym je wypisać a date.write() zapisuje ciąg znaków
date = open('date.txt','w')
...
date.close()
with open('date.txt','w') as data:
data.write(str(1.1))
Dregorio napisał(a):
with open('date.txt','w') as data: data.write(str(1.1))
Niepusty plik tekstowy powinien być zakończony znakiem nowej linii.
3.403 Text File
A file that contains characters organized into zero or more lines.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403
3.206 Line
A sequence of zero or more non- <newline> characters plus a terminating <newline> character.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206
>>> with open('doot.txt', 'w') as f:
... f.write(str(13.37) + '\n')
>>> ls
doot.txt
>>> cat doot.txt
13.37
>>>
Ja się jeszcze doczepię do dodawania napisów, na ile się orientowałem dawniej, regułą w pythonie jest format i join. (Chyba że moje info jest przedawnione i weszły nowe konwencje :).
with open('doot.txt', 'w') as f:
f.write("{:.2f}\n".format(13.37))
Dla list:
#~ Nie ma co na ten przykład patrzeć, pomieszałem coś i wyszło niedziałające perpetum-debile :D
#with open('doot.txt', 'w') as f:
# f.write("{:.2f}\n".format(*(number for number in floats_array) ) )
Lub join bez walidacji czy to na bank floaty/integery:
with open('doot.txt', 'w') as f:
f.write("\n".join(str(number) for number in floats_array) )
f.write("\n")
2 - Zapewni jednolitą długość zmiennoprzecinkową, oczywiście można to pominąć.
W dodatku przeprowadzi też konwersję int -> float (co w sumie czasem może nie być pożądane), ale w odwrotną stronę (d zamiast f) wyrzuci error jak spróbujemy podać float'a zamiast int'a. Oczywiście literę można pominąć.
Oczywiście też można od pythona 3.6+ użyć formatowanego stringa w sposób f"{number}\n"
join
. 2) Zwróć uwagę, jak dużo wizualnego szumu wprowadziło formatowanie. 3) Domyślam się, co próbujesz zrobić w przykładzie z formatem i listą, ale format
tak nie działa. :D '\n'.join(map('{:.2f}'.format, [4.2, 66.6, 13.37]))
.
C
pamiętam :D. 2 - Ciężko się nie zgodzić. Chociaż staram się trzymać 'podsłyszanej' konwencji. 3 - Faktycznie, to nie zadziała. Zaczęcie pisania zaraz przed wyjściem to zły pomysł :). Zakomentuje w edycji, dzięki za podkreślenie babola.
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.