2014-10-28 16 views
5

Ho appena iniziato a usare Python's pysftp e sono confuso su come chiamare la funzione walktree.Spiegazione dei parametri pysftp.Connection.walktree()

ho trovato un po 'di codice (che si trova a http://pydoc.net/Python/pysftp/0.2.8/pysftp/) che mi ha aiutato a capire meglio che cosa fanno i miei parametri devono assumere

def walktree(self, remotepath, fcallback, dcallback, ucallback, recurse=True): 
    '''recursively descend, depth first, the directory tree rooted at 
    remotepath, calling discreet callback functions for each regular file, 
    directory and unknown file type. 

    :param str remotepath: 
     root of remote directory to descend, use '.' to start at 
     :attr:`.pwd` 
    :param callable fcallback: 
     callback function to invoke for a regular file. 
     (form: ``func(str)``) 
    :param callable dcallback: 
     callback function to invoke for a directory. (form: ``func(str)``) 
    :param callable ucallback: 
     callback function to invoke for an unknown file type. 
     (form: ``func(str)``) 
    :param bool recurse: *Default: True* - should it recurse 

    :returns: None 

Ma io sono ancora confuso su cosa si intende esattamente per "funzione di callback per richiamare per un normale . presentare, per una directory, e per un tipo di file sconosciuto

ho anche guardato attraverso la documentazione ufficiale: https://media.readthedocs.org/pdf/pysftp/latest/pysftp.pdf

ma tutto quello che mi dice circa il walktree() funzione è quella:

è un metodo potente che può ricorsivamente (predefinita) a piedi una distanza struttura di directory e chiama un funzioni di callback forniti dall'utente per ogni file, directory o un'entità sconosciuta che incontra . È utilizzato in i metodi get_x di pysftp e può essere utilizzato con grande efficacia per fare la propria offerta. A ogni richiamata viene fornito il nome percorso dell'entità . (modulo: func(str))

che ho sentito non mi ha dato molte informazioni su come chiamarlo correttamente.

Se qualcuno potrebbe fornire un esempio di chiamata corretta di questa funzione e una spiegazione del motivo per cui si stanno passando gli argomenti scelti, sarebbe molto apprezzato!

risposta

0

Scopri cos'è the callback, se questo è il problema reale.

A tutti e tre gli argomenti di walktree, è necessario passare un riferimento a una funzione che accetta un singolo argomento di stringa. Poiché walktree ricorre alla struttura di directory, "richiama" una di queste funzioni per ogni oggetto file system trovato, passando il percorso all'oggetto come argomento (stringa).

In genere, è necessario un certo stato (contesto) per l'implementazione della funzione. Cioè un riferimento a un contenitore per memorizzare i percorsi trovati. Per evitare l'uso di variabili globali, l'esempio di pysftp, a cui si fa riferimento nella domanda, passa in metodi di classe helper anziché semplici funzioni, mantenendo lo stato (i contenitori, 10 e ulist) nell'istanza dell'oggetto.

Problemi correlati