2014-10-28 13 views
5

Tôi vừa mới bắt đầu sử dụng pysftp của Python và tôi bị nhầm lẫn như cách gọi hàm walktree của Python.Giải thích các tham số pysftp.Connection.walktree()

tôi thấy một số mã (tìm thấy tại http://pydoc.net/Python/pysftp/0.2.8/pysftp/) đã giúp tôi hiểu rõ hơn những gì hình thành thông số của tôi nên lấy

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 

Nhưng tôi vẫn còn lúng túng về chính xác những gì có nghĩa là "hàm callback để gọi cho một thường xuyên . nộp, đối với một thư mục, và cho một loại tệp không xác

tôi cũng đã xem xét thông qua các tài liệu chính thức: https://media.readthedocs.org/pdf/pysftp/latest/pysftp.pdf

nhưng tất cả nó nói với tôi về walktree() chức năng là:

Là một phương pháp mạnh mẽ có thể đệ quy (mặc định) đi bộ một từ xa cấu trúc thư mục và gọi một người dùng cung cấp chức năng gọi lại cho mỗi tập tin, thư mục hoặc tổ chức nào chưa biết nó gặp . Nó được sử dụng trong các phương pháp get_x của pysftp và có thể được sử dụng với hiệu ứng tuyệt vời để làm đặt giá thầu của riêng bạn. Mỗi cuộc gọi lại được cung cấp tên đường dẫn của thực thể . (mẫu: func(str))

mà tôi cảm thấy không cung cấp cho tôi nhiều thông tin về cách gọi đúng cách.

Nếu ai đó có thể cung cấp ví dụ về cách gọi chức năng này một cách chính xác và giải thích lý do tại sao bạn đang chuyển các đối số đã chọn, nó sẽ được đánh giá cao!

Trả lời

0

Tìm hiểu xem the callback là gì, nếu đó là vấn đề thực tế.

Đối với tất cả ba đối số của walktree, bạn cần phải chuyển một tham chiếu đến một hàm lấy một đối số chuỗi đơn. Khi walktree đệ quy cấu trúc thư mục, nó "gọi lại" một trong các hàm đó cho mọi đối tượng hệ thống tệp mà nó tìm thấy, chuyển đường dẫn tới đối tượng dưới dạng đối số (chuỗi).

Thông thường, bạn sẽ cần một số trạng thái (ngữ cảnh) để triển khai hàm. I E. tham chiếu đến vùng chứa để lưu trữ các đường dẫn được tìm thấy. Để tránh sử dụng các biến toàn cầu, mẫu pysftp, bạn đã đề cập đến trong câu hỏi của bạn, chuyển các phương thức của lớp trợ giúp thay vì các hàm đơn giản, giữ trạng thái (các vùng chứa flist, dlistulist) trong cá thể đối tượng.

Các vấn đề liên quan