zapis do pliku

0

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()
1

@s_b_r_deepstep:

with open('date.txt','w') as data:
    data.write(str(1.1))
1
Dregorio napisał(a):

@s_b_r_deepstep:

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

>>> 
0

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"

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