[Python-de] ftp -- dir() in Liste speichern?

Rainer Fischbach fischbach at ecs-gmbh.de
Wed Sep 4 13:42:21 EDT 2002


>
>Danke, hat mir schon weiter geholfen. Hab da aber noch ein Frage.
>
>Python 1.5.2 (#2, Jun 17 2002, 16:38:45)  [GCC 2.95.3 20010315 (release)]
on sunos5
>Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>>> import sys
>>>> sys.stdout = open('output', 'w')
>>>> ftp.dir('*' + 'md' + '*')
>>>> sys.stdout.close()
>>>>
>>>> s = open('output').read()
>>>> s
>Traceback (innermost last):
>  File "<stdin>", line 1, in ?
>ValueError: I/O operation on closed file
>

klaro, der Versuch, s auszugeben, führt ja zu einer Schreiboperation auf
sys.stdout 
--- und das hast Du gerade geschlossen!!!

Du musst also zuerst sys.stdout wieder zurücksetzen!!!
Versuch es mal damit (für 1.5.2 musst Du 'file' durch 'open' ersetzen):

import sys

class ouml:
    cnt = 0
    def __init__ (self, name = None):
        if not name:
            name = 'ouml_%s.txt' % ouml.cnt
            ouml.cnt += 1
        self.name = name
        self.umlf = file (name, 'w')
        self.sys_stdout = sys.stdout # pseudofile aufheben
        sys.stdout = self.umlf
        self.open = 1
    def close (self):
        if not self.open:
            raise IOError
        self.umlf.close ()
        sys.stdout = self.sys_stdout # pseudofile wiederherstellen
        self.open = 0
    def retrieve (self):
        if self.open:
            raise IOError
        rf = file (self.name)
        rs = rf.read ()
        rf.close ()
        return rs
        
...
output = ouml ()
ftp.dir (...)
output.close ()
s = output.retrieve ()
...

>Wenn ich die Umgebung schliesse und Python1.5.2 nochmal starte, dann kann
ich 'output' auslesen. Ist das normal? 
>Habe nur python1.5.2 zur Verfügung.
>Danke und Gruss,
>Manuel
>
>-- 
>Sind wir nicht alle ein bischen Python?
>___________________________________________________________________________
___
>Die clevere Geldreserve: der DiBa-Privatkredit. Funktioniert wie ein Dispo, 
>ist aber viel günstiger! Alle Infos: http://diba.web.de/?mc=021104
>
>
>_______________________________________________
>Python-de maillist  -  Python-de at starship.python.net
>http://starship.python.net/mailman/listinfo/python-de
>
>
    Mit freundlichen Gruessen

    i.V.
    Rainer Fischbach
______________________________________________________

    ECS
    Engineering Consulting & Solutions GmbH
    Muehlstrasse 3
    D-92318  Neumarkt

    Phone:               +49 (0)9181 - 4764-84
    Fax:                 +49 (0)9181 - 4764-50
    Mobil:               +49 (0)171  - 41 41 570
    e-mail:              fischbach at ecs-gmbh.de
    WWW:                 http://www.ecs-gmbh.de
______________________________________________________






More information about the Python-de mailing list