multiOpen

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.
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

multiOpen

Beitragvon Costi » Dienstag 23. Januar 2007, 13:18

dieser code ist total ungetestet, will nur wissen ob dieser loesungsweg der richtige ist um eine art "multiOpen" (von mir aus auch "multiFile" ;-) ) zu implementieren

danke



Code: Alles auswählen


class DummyFile:
   def __init__(self, text):
      self.text = text
   def write(self, text):
      self.text += text
      
   def read(self):
      return self.text
   
   def readlines(self):
      return self.text.splitlines()
   
   

class open:
   def __init__(self, arg, user=None, pwd=None):
      
      self.text = ""
      
      port = None
      if "://" in arg:
         proto, rest = arg.split("://", 1)
         machine, path = rest.split("/", 1)
         if ":" in path:
            z = path.split(":")
            port = z[-1]
            path = ":".join(z[:-1])
      else:
         proto = "file"
         path = rest
      
      z = path.split("/")
      file = z[-1]
      path = "/".join(z[:-1])
      print [proto, machine, path, file, port]

      
      
      if proto == "file":#==============================FILE
         f = file(path + file)
         def read():
            return f.read()
         def save():
            f.close()
            f = file(path + file)
         def close():
            f.close()
   
      elif proto == "ftp":#=============================FTP
         from ftblib import FTP
         f.cwd(path)
         f = FTP(machine)   
         if user and pwd:
            f.login(user, pwd)
         def read():
             f.retrbinary("RETR " + file, lambda(text): text)
             return text
         
         def save():
            f.storbinary(path + file, DummyFile(self.text)) #oder doch 'storlines'?
            return DummyFile.read()
         def close():
            f.close()
         
      
      elif proto == "http":#============================HTTP
         from urllib import urlopen
         def read():
            f = urlopen(arg)
            return f.read()
         def close():
            f.close()
         
         def save():
            raise kaWas, "save not supported for HTTP"#ok, es gibt ne HTTP-put methode aber....
      
      self.save = save
      self.read = read
      self.close = close
      
   def __del__(self):
      self.close()
      
         
      
f = open("http://www.google.de/test/foo.html")
print f.read()
Zuletzt geändert von Costi am Mittwoch 31. Januar 2007, 18:22, insgesamt 1-mal geändert.
cp != mv
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 23. Januar 2007, 14:10

Nutzte doch statt deiner eigenen DummyFile Klasse, einfach StringIO ;)

btw. kannst du bitte etwas aussagekräftigere Titel verwenden!

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 23. Januar 2007, 17:30

jens hat geschrieben:Nutzte doch statt deiner eigenen DummyFile Klasse, einfach StringIO ;)

Die Inlinekommentare kannst du dir bei der Gelegenheit auch abgewöhnen.

MultiOpen implementiert man auf keinen Fall so, dass man open überschreibt. Ich würde vermutlich einfach von StringIO erben und dann es meinen Bedürfnissen nach erweitern.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Re: alles gut soweit

Beitragvon Joghurt » Dienstag 23. Januar 2007, 21:52

Costi hat geschrieben:

Code: Alles auswählen

      elif proto == "ftp":#=============================FTP
         from ftblib import FTP
...
      elif proto == "http":#============================HTTP
         from urllib import urlopen
urllib kann auch ftp:// URLs öffnen.
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Beitragvon Costi » Mittwoch 24. Januar 2007, 18:30

ich bedanke mich recht herzlich und fange dan mal an zu schrieben...

cu
cp != mv

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder