我已经创建了一个程序,并且有一个函数可以从ftp服务器获取一个名为news_2014.txt的文本文件。我目前有这个代码:
def getnews():
server = 'my ftp server ip'
ftp= ftplib.FTP(server)
username = 'news2'
password = ' '
ftp.login(username,password)
filename = 'ftp://my ftp server ip/news/news_2014.txt'
path = 'news'
ftp.cwd(path)
ftp.retrlines('RETR' + filename, open(filename, "w").open)
我想让程序在Tkinter标签上使用readlines显示行。但如果我尝试调用top函数,它会说:
IOError: [Errno 22] invalid mode ('w') or filename: 'ftp://news/news_2014.txt'
答案 0 :(得分:1)
RETR只需要远程路径名,而不是URL。同样,您不能open
一个网址;你需要传递一个有效的本地文件名。
将其更改为filename = 'news_2014.txt'
应该可以解决这个问题。
retrlines
方法检索行并可选择执行回调。您已指定一个回调来打开本地文件进行写入,但这对于每个检索到的行几乎不是您想要做的事情。试试这个:
textlines = []
ftp.retrlines('RETR ' + filename, textlines.append)
然后显示textlines
的内容。 (注意RETR
命令与其参数之间的空格。)
我认为example in the documentation让新人感到困惑。有人应该提交错误报告。