Ein importieren wird genau einmal getan, nämlich wenn das entsprechende Modul (ws den import Befehl enthält) zum ersten mal geladen wird, direkt nachdem es geparsed wurde. Sprich: zu sagen dass es Zeit kostet wenn man ein Modul läd ist absoluter Käse, es ist eine Setup-Zeit über die wir reden (und keine wiederkehrende Zeit), und wenn Dein Programm nicht 10000x in der Sekunde aufgerufen wird ist diese Zeit absolut vernachlässigbar für jede reale Anwendung.
Unabhängig davon: ganz egal ob Du nun C-Jünger bist oder nicht, auch in C benutzt man die *stat()-Familie um die Dateigröße rauszukriegen (da ein open/seek/tell immer noch viel langsamer und auch (Ressourcen-)teurer als ein *stat() ist, was direkt mit dem Dateisystem kommuniziert, bzw. eben nur die Metatabellen des Dateisystems berührt, während ersteres eben die entsprechenden SYSCALLS bemühen muß um nicht nur eine Tabelle aus dem Kernel-Space zu ziehen, sondern gleich auch noch die Meta-Informationen über die Datei mit), sprich auch hier zu sagen dass Du das aus "Minimalitätsgründen" machen willst ist ziemlicher Unfug, ehrlich gesagt.
Dass Du in Python eben, im Gegensatz zu C, Namespaces hast, in denen Funktionen zusammengefasst sind, ist eben so. Und um einen Namespace mittels import einzubinden, darum wirst Du nicht drum rum kommen.
Und, zu guter letzt:
wenn der Python-Interpreter startet wird das os-Modul sowieso schon geladen, unabhängig davon was in Deinem Programm passiert:
Code: Alles auswählen
modelnine@phoenix ~ $ python
Python 2.4.2 (#1, Feb 5 2006, 17:30:13)
[GCC 4.0.2 (Gentoo 4.0.2-r3, pie-8.7.8)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.modules
{... ,'posixpath': <module 'posixpath' from '/usr/lib/python2.4/posixpath.pyc'>, 'os.path': <module 'posixpath' from '/usr/lib/python2.4/posixpath.pyc'>, 'stat': <module 'stat' from '/usr/lib/python2.4/stat.pyc'>, 'sys': <module 'sys' (built-in)>, 'posix': <module 'posix' (built-in)>, 'os': <module 'os' from '/usr/lib/python2.4/os.pyc'>, ...}
>>>
(ich hab diese Liste aus Gründen der Übersichtlichkeit etwas verkürzt; da stehen noch ein paar mehr Module drin im Normalfall)
Also, es gibt keine (guten) Gründe den import os sein zu lassen, deswegen machs doch einfach mit stat.
PS: das os-Modul gehört zum Standardumfang wenn Du ein Programm py2exe-fizierst (eben aus dem zuletzt genannten Grund). Also kannst Du Dich ruhig auf das os-Modul verlassen.
--- Heiko.