1

簡単な質問がありますが、ばかげているように聞こえるかもしれません。しかし、私の愛のために、私はオンラインまたは自分で解決策を見つけることができません! 私は自分でPythonを使用してFTPクライアントを作成しようとしています.TkinterのリストボックスにFTPサーバー上のすべてのファイル名を表示しようとしています. しかし、私はテキストを表示することができません!これが私がこれまでに持っているコードです:

# 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()
4

1 に答える 1

2

リストretrlinesではなく応答コードが返されるため、「Transfer Complete」と表示されます。ドキュメントを確認すると、コマンドとは別に、返される各行に対して呼び出される 2 番目の引数であるコールバックがあることがわかります。デフォルトでは、行を標準出力に出力するだけです。

lines = []
def append_line(line):
    lines.append(line)
ftp.retrlines('LIST', append_line)
于 2012-01-01T14:49:15.020 に答える