Python 2.7 Tkinter和ftplib

Python 2.7 Tkinter和ftplib,python,tkinter,python-2.7,ftplib,Python,Tkinter,Python 2.7,Ftplib,我有一个简短的问题,听起来可能很愚蠢。但为了我的爱,我无法在网上或独自找到解决方案!我正在尝试为自己制作一个使用python的FTP客户机,并尝试在Tkinter中制作一个列表框来显示FTP服务器上的所有文件名。但是我无法显示文本!以下是我目前掌握的代码: # Import the FTP object from ftplib from ftplib import FTP from Tkinter import * app = Tk() app.title("FTP") app.geometr

我有一个简短的问题,听起来可能很愚蠢。但为了我的爱,我无法在网上或独自找到解决方案!我正在尝试为自己制作一个使用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()
“传输完成”是因为
retrlines
返回响应代码,而不是列表。如果查看文档,您将看到除了命令之外,还有第二个参数,即回调,它将为返回的每一行调用。默认情况下,它只将行打印到标准输出

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

你知道那个回叫是什么吗?我添加了一个小代码来解释如何做。您可以让它更紧凑一些:
ftp.retrlines('LIST',lines.append)
注意:对于示例代码,在
ftp.retrlines
返回后,
lines
包含一个列表,其中每个元素都是ftp服务器回复的行之一。现在,由您来处理它们:)谢谢!我试过了,它只解决了最后一个问题:如何在列表中为每个“”插入“\n”?要将所有行合并到一个列表中吗?例如:
h='\n'。连接(行)