Modul "os" nicht cross-platform?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Crazed
User
Beiträge: 171
Registriert: Sonntag 18. Mai 2008, 11:44

Samstag 30. August 2008, 08:21

Hallo,
Ich sehe gerade das es kleine Probleme gibt wenn ich das folgende Script unter Windows ausführen will:

Code: Alles auswählen

#!/usr/bin/python

import plugins.imports

import types
import os

class pyEnv(object):
    def __init__(self):
        self.commands = {}
        
        for plugin in self.plugins:
            plugin = __import__(os.path.join('plugins', plugin))
            for key, value in plugin.__dict__.iteritems():
                if type(value) == types.FunctionType:
                    self.register_command(key, value)
                    
    def register_command(self, command, callback):
        if not self.commands.has_key(command):
            self.commands[command] = callback
            
    def parse(self, string):
        tokens = string.split()
        command = tokens[0].lower()
        
        if self.commands.has_key(command):
            try:
                self.commands[command](tokens[1:], self)
            except (TypeError):
                try:
                    self.commands[command](tokens[1:])
                except (Exception), error:
                    print 'Error: %s' % error
                    
    @property
    def plugins(self):
        plugins = []
        for file in os.listdir(os.path.join('plugins')):
            if not file.startswith('__') and file.endswith('.py'):
                plugins.append(file.split('.py')[0])
                
        return plugins
    
pyenv = pyEnv()

while True:
    command = str(raw_input('>>> '))
    
    if command:
        pyenv.parse(command)
Ich kann mich nicht an die genaue Fehlermeldung erinnern, aber ich glaube der Python Interpreter beschwerte sich die ganze Zeit das das die Datei "plugins/commands" nicht gefunden werden kann. (Dort definiere ich die Befehle). Aber damit überhaupt erst diese Fehlermeldung zustande kommt musst das script die Datei ja bereits gefunden haben.

(Ja einen Ordner Plugin gibts im gleichen Verzeichnis).

Ich habe das Script genauso wie unter Ubuntu mit Eclipse und PyDev starten wollen.
Selbst wenn ich es manuell mit dem Python Interpreter starte bekomme ich diese Fehlermeldung. Aber ich dachte ich hatte das script dank "os" möglichst cross-platform gehalten?

PS:
Die erste import Zeile könnt ihr eigentlich ignorieren. Dort lasse ich nur einen __init__.py ausführen die in dem plugins.imports ordner liegt und dann diesen ordner an den sys.path anhängen damit die pyEnv einigermaßen portable bleibt.

MfG,
CracKPod
BlackJack

Samstag 30. August 2008, 08:37

Wie kommst Du darauf, das `os` nicht "cross plattform" funktioniert? Und was ist denn nun die Fehlermeldung? Und vor allem *wo* in diesem Skript tritt sie denn auf?
Antworten