Seite 1 von 1

was zählt os.path.getsize [gelöst]

Verfasst: Mittwoch 5. Dezember 2007, 23:46
von Oscar
Hi,
bei meiner Annäherung an Python beschäftige ich mich gerade mit dem os modul.
Ich lasse mir z.B. die Größe einer Datei anzeigen:

Code: Alles auswählen

oscar@debbi:~$ ls -l text |awk '{ print $5 }'
81756

Code: Alles auswählen

>>> os.path.getsize('/home/oscar/text')
81756L
Wie ich das L loswerde habe ich schon herausgeknobelt aber interessanter
ist die Frage, warum es dort steht und was es bedeutet.
Hier steht die Antwort leider nicht: http://www.python.org/doc/current/lib/m ... .path.html
Gruß Oscar

Verfasst: Mittwoch 5. Dezember 2007, 23:49
von veers
Das L steht für Long (Integer). Also ein grosser / langer Integer ;)

Verfasst: Mittwoch 5. Dezember 2007, 23:50
von BlackVivi
Hmpf, probieren wir mal was aus:

Code: Alles auswählen

In [1]: 372477894372
Out[1]: 372477894372L

In [2]: 4323
Out[2]: 4323
L steht für Long. Wenn eine Zahl größer ist als

Code: Alles auswählen

In [6]: import sys

In [7]: sys.maxint
Out[7]: 2147483647
wirds'n Long.

Code: Alles auswählen

In [8]: sys.maxint + 1
Out[8]: 2147483648L

Jedoch stören diese nicht bei der Ausgabe (und allgemein auch nicht):

Code: Alles auswählen

In [9]: print sys.maxint + 1
2147483648
Ich hoffe, dass war verständlich.

was zählt os.path.getsize

Verfasst: Donnerstag 6. Dezember 2007, 00:05
von Oscar
Hi,
okay, Danke an Euch. Ich interpretiere das so: die Funktion gibt mir
die Dateigröße + Datentyp zurück. Blöderweise steht das in der o.g.
Doku nicht! Die verkürzte Ausgabe mit print ist da schon hilfreich.
Gruß Oscar

Verfasst: Donnerstag 6. Dezember 2007, 00:09
von veers
Ich befürchte du verstehst das Falsch. Ein Wert ist in Python immer an einen Datentypen gebunden. Das L wird einfach vom interaktiven Interpreter angezeigt damit du einen long von einem int unterscheiden kannst ;)

was zählt os.path.getsize

Verfasst: Donnerstag 6. Dezember 2007, 00:18
von Oscar
Hi,
@veers: Nee, ich glaube, das ich das schon richtig verstehe. Es gibt, wie
in anderen Programmiersprachen auch, unterschiedliche Datentypen mit
unterschiedlichen Wertebereichen - das ist schon klar. Mir ging es ja auch
nur um die Ausgabe der Funktion (wobei ich - wie ich jetzt sehe - auch selber
auf die Bedeutung von L hätte kommen können). :(

Verfasst: Donnerstag 6. Dezember 2007, 09:06
von BlackJack
Du hast geschrieben, dass Dir die Funktion die Dateigröße + Datentyp zurück gibt, und das stimmt so nicht. Die Funktion gibt nur die Dateigrösse zurück. Die Information über den Typ ist in *jedem* Objekt enthalten, die braucht man nicht extra zurück geben.

Für das 'L' ist das Zahlobjekt selbst verantwortlich, nämlich dann, wenn man es nach seiner `repr()`-Form befragt, was die Python-Shell tut wenn sie Ergebnisse darstellt. ``print`` dagegen bittet Objekte ihre `str()`-Form zu liefern und da Antworten `long`-Instanzen ohne das 'L'.

Verfasst: Donnerstag 6. Dezember 2007, 09:43
von Costi
und warum gibt cursor.exeute() (von der DB API 2.0) ein Long zurueck, auch wenn der rueckgabewert deutlich unter sys.maxint liegt?

Verfasst: Donnerstag 6. Dezember 2007, 09:49
von BlackVivi
Costi hat geschrieben:und warum gibt cursor.exeute() (von der DB API 2.0) ein Long zurueck, auch wenn der rueckgabewert deutlich unter sys.maxint liegt?
Vielleicht wird beim return explizit auf ein Long verwiesen? 'return long(number)' oder so. 'getsize' macht das imho auch.

Verfasst: Donnerstag 6. Dezember 2007, 11:45
von Leonidas
Costi hat geschrieben:und warum gibt cursor.exeute() (von der DB API 2.0) ein Long zurueck, auch wenn der rueckgabewert deutlich unter sys.maxint liegt?
Vielleicht um konsistent zu sein für den Fall, dass `execute()` eben mehr als `sys.maxint` ausgibt. Auf 32-Bit Systemen kann sowas möglicherweise mal vorkommen, auf 64-Bit Systemen eher unwarscheinlich.

Verfasst: Donnerstag 6. Dezember 2007, 13:12
von birkenfeld
Freut euch auf Py3k :)

was zählt os.path.getsize

Verfasst: Donnerstag 6. Dezember 2007, 18:37
von Oscar
Hi,
noch mal kurz zum Thema.
@ veers und BlackJack: ich glaube, jetzt geht mir die Lampe auf, von der ich vorher
schon glaubte, das sie aufgegangen ist. :idea: Danke
Gruß Oscar