zapis do pliku

SB
  • Rejestracja:prawie 10 lat
  • Ostatnio:prawie 6 lat
  • Postów:19
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

Kopiuj
date = open('date.txt','w')
...
date.close()
DR
  • Rejestracja:około 12 lat
  • Ostatnio:około 23 godziny
  • Postów:1131
1

@s_b_r_deepstep:

Kopiuj
with open('date.txt','w') as data:
    data.write(str(1.1))
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
1
Dregorio napisał(a):

@s_b_r_deepstep:

Kopiuj
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

Kopiuj
>>> with open('doot.txt', 'w') as f:
...     f.write(str(13.37) + '\n')

>>> ls
doot.txt

>>> cat doot.txt
13.37

>>> 
DR
@Mózg: no patrz, człowiek uczy się całe życie, a umiera głupim :P Dzięki za linki
Guaz
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Częstochowa
  • Postów:221
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 :).

Kopiuj
with open('doot.txt', 'w') as f:
    f.write("{:.2f}\n".format(13.37))

Dla list:

Kopiuj
#~  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:

Kopiuj
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"


Linux Mint
Arduino / Python 3.5.2
edytowany 2x, ostatnio: Guaz
1) Konkatenacja niezmiennych ciągów jest O(N^2), dlatego stosujemy 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])).
Guaz
1 - Coś z pisania w 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.