2012-01-01 7 views
1

私は簡単な質問があり、ダムと聞こえるかもしれません。しかし、私の愛のために、私はオンラインで、または自分で解決策を見つけることができません!私は自分自身のためにPythonを使ってFTPクライアントを作ろうとしており、TkinterのリストボックスをFTPサーバ上のすべてのファイル名で表示しようとしています。しかし、私は表示するテキストを取得することはできません! retrlinesは、応答コード、ないリストを返すためPython 2.7 Tkinterとftplib

# Import the FTP object from ftplib 
from ftplib import FTP 
from Tkinter import * 

app = Tk() 
app.title("FTP") 
app.geometry("300x500") 

def handleDownload(block): 
    file.write(block) 
    print ".", 

def login(): 
    ftp.login(username.get(),password.get()) 

    # This is where I am held up I tried ftp.retrlines('LIST') but it would 
    # not be inserted into to the list box instead it inserted "Tranfer Complete" at the end! 
    # Any suggetion? 
    h = ? 
    stuff = Listbox(app) 
    stuff.insert(END, h) 
    stuff.pack() 

    filename = "Steam Engine Poster.pdf" 

    Label(app, text ='Opening local file ' + filename).pack() 
    file = open(filename, 'wb') 

    Label(app, text = "Downloading Steam Engine Poster.pdf").pack() 

    ftp.retrbinary('RETR ' + filename, handleDownload) 

    Label(app, text = "Closing FTP connection!").pack() 

    ftp.close() 



ftp = FTP('sciphigames.com') 
Label(app, text = "Login").pack() 

username = StringVar(None) 
username = Entry(app, text = "Username: ") 
username.pack() 

password = StringVar(None) 
password = Entry(app, text = "Password: ") 
password.pack() 

button = Button(app, text = "Login!", command = login) 
button.pack() 

app.mainloop() 

答えて

2

あなたが取得する「転送完了」:ここで私はこれまでのところ、以下の持っているコードです。ドキュメントをチェックすると、コマンドとは別に、返された各行に対して呼び出されるコールバックという2番目の引数があることがわかります。デフォルトでは、行を標準出力に出力するだけです。

lines = [] 
def append_line(line): 
    lines.append(line) 
ftp.retrlines('LIST', append_line) 
+0

コールバックがどのようなものか分かりますか? – user1114215

+1

これを行う方法を説明する少しのコードを追加しました。 'ftp.retrlines( 'LIST'、lines.append)' –

+0

注:コード例では、 'ftp.retrlines'が返った後、' lines'は各要素が1であるリストを含んでいますFTPサーバーが応答した回線の数。今、それらを処理するのはあなた次第です:) –

関連する問題