2014-10-28 95 views
5

我剛剛開始使用Python的pysftp,我很困惑如何調用它的walktree函數。pysftp.Connection.walktree()參數的解釋

我發現了一些代碼(在http://pydoc.net/Python/pysftp/0.2.8/pysftp/找到),幫助我更好地瞭解形成我的參數應該採取

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 

但我仍對到底什麼是「回調函數意味着援引定期困惑。文件,目錄,以及未知的文件類型

我也通過官方文檔看了:https://media.readthedocs.org/pdf/pysftp/latest/pysftp.pdf

但所有它告訴我有關walktree()的功能是:

是可以遞歸(默認)走遠程 目錄結構和用於 調用用戶提供的回調函數在每次遇到文件,目錄或未知實體的有效方法。它用於 pysftp的方法,可用於您自己的出價很大的作用 。每個回調都提供了 實體的路徑名。 (形式:func(str)

我覺得沒有給我很多關於如何正確調用它的信息。

如果有人可以提供正確調用此函數的示例,並解釋爲什麼您要傳遞所選參數,將不勝感激!

回答

0

瞭解什麼是the callback,如果這是實際問題。

對於walktree的所有三個參數,您需要將引用傳遞給接受單個字符串參數的函數。當walktree遞歸目錄結構時,它爲它找到的每個文件系統對象「回調」其中一個函數,並以(字符串)參數的形式傳遞對象的路徑。

通常,您需要一些狀態(上下文)來實現函數。即對存儲找到的路徑的容器的引用。爲了避免使用全局變量,您在問題中提到的pysftp示例傳遞helper類的方法而不是普通函數,並將狀態(容器的flist,dlistulist)保留在對象實例中。