好的高层次Python FTP/HTTP库?

1 投票
2 回答
1213 浏览
提问于 2025-04-15 14:53

我在找一个好用的高层次的Python FTP客户端/服务器库。我正在做一个项目,这个项目是基于ftplib/urllib/urllib2,最开始只有一个功能,现在已经“演变”成了一个小的http/ftp库,但几乎没有什么是为了后续扩展而设计的。所以现在是时候认真重构一下了,我想直接换成一个库。我最不想处理的就是那些复杂的重试逻辑(比如,重试15次,或者重试到中午12点)。

我们现在面临的问题是,有大约10个不同的grab()put()函数。从美观的角度来看,我宁愿只要一个各自的函数,并且可以选择性地传入参数,比如try_until=datetime(2009, 10, 7, 19)或者retrys=15。我们处理的是二进制和文本数据,所以这些函数需要对这两种数据都能比较聪明地处理。而且我们抓取的次数远远多于上传,所以我可以不需要上传的功能。

urlgrabber看起来正是我想要的,但似乎在过去几年没有什么开发,我也不确定它和2.6版本的兼容性如何。有没有人对此有经验?或者有什么看法?

2 个回答

0

根据你正在编写的应用类型,你可能想考虑一下twisted python,因为它内置了HTTP服务器和客户端的代码。不过,这和标准的程序化Python编程有很大的不同。

twisted的一个大优点是,它可以在后台处理客户端请求,处理重试,并且非常可扩展。

更新

如果你需要一个快速的脚本来与服务器互动,可以看看这个serverfault的回答:https://serverfault.com/questions/66336/script-automation-login-enter-password-run-commands-save-output-locally

它推荐了一个工具expect

Expect是一个用于自动化交互式应用程序的工具,比如telnet、ftp、passwd、fsck、rlogin、tip等。Expect让这些事情变得非常简单。Expect也可以用于测试这些应用程序。而且通过添加Tk,你还可以把交互式应用程序包装在X11图形界面中。

Expect可以轻松完成各种任务,这些任务用其他工具做起来会非常困难。你会发现Expect是一个绝对不可或缺的工具——使用它,你将能够自动化一些你之前从未想过的任务,而且你会发现这个自动化过程既快速又简单。

听起来不错!

4

URLgrabber看起来已经很成熟了,因为它被yum使用(而yum又被很多Unix系统用),所以我觉得它应该非常稳定。Python 2.x基本上是向后兼容的。你可能会遇到一些警告,但我认为在Python 2.6下它应该能正常工作。

撰写回答