访问ftp服务器中的文件

时间:2014-01-07 04:12:41

标签: python ftp ftplib

我已经创建了一个程序,并且有一个函数可以从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'

1 个答案:

答案 0 :(得分:1)

RETR只需要远程路径名,而不是URL。同样,您不能open一个网址;你需要传递一个有效的本地文件名。

将其更改为filename = 'news_2014.txt'应该可以解决这个问题。

retrlines方法检索行并可选择执行回调。您已指定一个回调来打开本地文件进行写入,但这对于每个检索到的行几乎不是您想要做的事情。试试这个:

textlines = []
ftp.retrlines('RETR ' + filename, textlines.append)

然后显示textlines的内容。 (注意RETR命令与其参数之间的空格。)

我认为example in the documentation让新人感到困惑。有人应该提交错误报告。