Seite 1 von 1

Daraus einen float?

Verfasst: Mittwoch 1. Oktober 2008, 21:06
von Rootmentor
Hey ich hab nur ne kleine frage undzwar.
Wie mache ich jetzt aus display_byte einen Float (fließkommazahl)
Ich möchte ja natürlich das die kilobyte mit komma angezeigt werden.
Danke ihr würdet mir sehr helfen

Code: Alles auswählen

print """
Welcome to txtcounter \n
Make sure that you switched to the directory where your txt file is saved"""


txt_to_count = input(str("Drag a txt file in here:"))

a = open(txt_to_count , "r")
x = a.read()
print len(x)  , "letters"


display_byte = len(x) * 1024
print display_byte 

:roll:

Verfasst: Mittwoch 1. Oktober 2008, 21:14
von Pekh
Also, wenn ich zwei Ganzzahlen miteinander multipliziere, kommt immer eine Ganzzahl heraus. Wozu und wo willst du an der Stelle ein Komma sehen?

Ansonsten gibt es verschiedene Varianten. Du könntest statt mit 1024 mit 1024.0 multiplizieren, was eine implizite Typänderung des Ergebnisses bewirkt. Oder du nutzt 'float(x)' zur Umwandlung des Wertes. Und dann gibt es noch das String-Formatting ('%f'), mit dem du den von dir gewünschten Effekt vielleicht auch hinbekommst. Aber wie oben geschrieben: In dem von dir angeführten Beispiel macht es keinerlei Sinn.

Edit: Division durch 1024.0 wäre sinnvoller ...

Verfasst: Mittwoch 1. Oktober 2008, 21:19
von Rootmentor
alles klar danke x)

Verfasst: Mittwoch 1. Oktober 2008, 21:20
von DasIch
input ist böse, du schliesst die Datei nicht und du kannst dafür float verwenden.

Einfacher und sinnvoller ist übrigens os.stat zu verwenden.

Verfasst: Mittwoch 1. Oktober 2008, 22:04
von lunar
Alternativ os.path.getsize(). Auf jeden Fall sollte man die Dateigröße nicht bestimmen, in dem man alles einliest und davon die Länge nimmt. Das ist langsam und scheitert bei großen Dateien.

Verfasst: Donnerstag 2. Oktober 2008, 07:28
von BlackJack
Ob in der Datei ``len(x)`` Buchstaben enthalten sind hängt auch von der Kodierung der Datei und der Definition von Buchstabe ab. Sind "whitespace"s "Buchstaben"? Sind Ziffern "Buchstaben"?

Verfasst: Donnerstag 2. Oktober 2008, 11:35
von HWK
Meintest Du vielleicht

Code: Alles auswählen

display_byte = len(x) / 1024.0
?
MfG
HWK

Verfasst: Donnerstag 2. Oktober 2008, 15:18
von Rootmentor
@ Hwk ja das meinte ich :D
Also nehm ich dann einfach raw_input?

Verfasst: Donnerstag 2. Oktober 2008, 17:33
von cofi
Rootmentor hat geschrieben: Also nehm ich dann einfach raw_input?

Code: Alles auswählen

txt_to_count = input(str("Drag a txt file in here:")) 
zu

Code: Alles auswählen

txt_to_count = raw_input("Drag a txt file in here:")
ändern.

Code: Alles auswählen

str("Drag a txt file in here:")
bewirkt übrigens gar nichts ;)