如何解决我的用于连接和显示ftp服务器内容的代码未在/ [dir] /
我似乎无法通过archive.ubuntu.com上的/ ubuntu /更改目录,并且我怀疑我的代码更改为错误的目录。我的虫子在哪里?
from ftplib import FTP
from tkinter import *
ftp = FTP("archive.ubuntu.com")
ftp.login()
window = Tk()
window.geometry("640x480")
def listdir():
print(ftp.dir())
[child.destroy() for child in window.winfo_children()]
for x in ftp.nlst():
Button(window,text=x,command=(lambda: cdir(x))).pack()
def cdir(x):
f = ftp.pwd()+"/"+x
ftp.cwd(f)
listdir()
listdir()
window.mainloop()
这是简单的代码,可以在较大的应用程序中重现我的问题。
系统:windows
python运行时:python 3.8
如何防止该错误?我可以使用python命令行更改目录。 ftplib不会引发任何错误,我已经尝试打印在ftp上运行的每个命令。
解决方法
您需要在lambda
函数中尽早绑定。更改为
lambda: cdir(x)
收件人:
lambda y=x: cdir(y)
否则,在调用函数时将获得x
的值,而不是在创建函数时获得的值。
(显然,您仍然需要告诉代码文件和目录之间的区别,因为有了上述修复,您就可以导航到代表实际文件的按钮,然后单击这些按钮将产生错误尝试将目录更改为它们时,但是以上内容可以解决您现在遇到的问题。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。