【问题标题】:Wget and Python download manager?Wget 和 Python 下载管理器?
【发布时间】:2013-06-19 03:28:55
【问题描述】:

我在使用 python 下载管理器时遇到了问题。我已经尝试过仅使用 wget 下载并且它有效。我还创建了我的 wxpython 界面。但我现在的问题是如何将两者结合起来?我如何将 wget 下载代码添加到我的 wxpython 界面并使其工作?是否可以将 wget 与 python 结合起来提供下载管理器,例如 winwget 或 visualwget?


import os
from ftplib import FTP

ftp = FTP("ftpsite","username", "password")
ftp.login()
ftp.retrlines("LIST")

ftp.cwd("folderOne")
ftp.cwd("subFolder")

listing = []
ftp.retrlines("LIST", listing.append)
words = listing[0].split(None, 8)
filename = words[-1].lstrip()

#download the file
local_filename = os.path.join(r"C:\example", file)
lf = open(local_filename, "wb")
ftp.retrbinary("RETR " + filename, lf.write, 8*1024)
lf.close()

我试过这个代码,它来自你的博客。但它说,

Traceback (most recent call last):
  File "directory", line 4, in <module>
    ftp = FTP("ftp://samoa.gsfc.nasa.gov/site/", "user", "password")
  File "C:\Python27\lib\ftplib.py", line 117, in __init__
    self.connect(host)
  File "C:\Python27\lib\ftplib.py", line 132, in connect
    self.sock = socket.create_connection((self.host, self.port), self.timeout)
  File "C:\Python27\lib\socket.py", line 553, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
gaierror: [Errno 11004] getaddrinfo failed

代码有什么问题?

【问题讨论】:

  • 看看subprocess 模块。你确定你真的需要 wget 吗?为什么不用纯 Python 和urllib2requests 来实现呢?
  • 谢谢!但是我也可以在 WxPython 中使用 urllib2 或 requests 吗?因为我不知道如何使用它。 Wget 具有自动下载功能,这就是我在下载管理器中所需要的。
  • 反过来想。您需要一个下载功能,而wget 恰好可以做到这一点。 WxPython 几乎可以使用任何东西。
  • 有没有使用 Wget 和 Python 创建的下载管理器?我不知道如何安装和使用 [request]?
  • 你为什么使用 Python 2.5?升级到 2.7.5。

标签: python wxpython wget download


【解决方案1】:

您需要做的就是使用事件处理程序。例如,您可以在其中复制和粘贴下载 URL 的文本控件。然后,您将有一个按钮将该下载添加到 ListCtrl 或更好的 ObjectListview 小部件。现在您有了一种显示下载列表的方法。

您可以在添加项目时开始下载,也可以使用单独的按钮开始所有下载。或者您可以使用第二个按钮按顺序而不是并行下载内容。由于下载文件是一个长时间运行的过程,因此您需要在线程中执行下载部分。您应该查看以下链接之一以了解详细信息:

您可能还会发现这个简单的下载示例很有用:http://wiki.wxpython.org/DownloadWidget

这个老帖子也解决了你的一些问题:http://wxpython-users.1045709.n5.nabble.com/wxPython-Python-equivalent-to-wget-lt-url-gt-td2358484.html

还有这篇关于使用 Python 下载文件的教程:http://www.blog.pythonlibrary.org/2012/06/07/python-101-how-to-download-a-file/

【讨论】:

  • 非常感谢您的帮助和建议。我会试试你刚才的建议。这是一个很大的帮助。
  • 对于您的建议,我还能使用 python 2.5 和 wxpython 吗?还是我需要用 2.7 或更高版本升级它?
  • 如果我要让它自动下载怎么样?自动下载不会停止,除非你关闭你的电脑,如果你每次都打开你的电脑它会自动下载。
  • 我还需要使用用户名和密码登录。需要填写的 http 和 ftp 文本框。以及您要保存下载文件的输出目录。我将如何用 python 做到这一点?
  • 是的,您可以使用 Python 2.5。要执行“自动”操作,您必须经常将进度信息保存在某个地方,并将您的应用程序添加为 Windows 中的启动应用程序,以使其在启动时运行。尝试阅读有关登录内容的对话框。文本控件有一个密码样式标志。您必须使用 FileDialog 的 Save 版本或 DirDialog 来指定下载位置。
猜你喜欢
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
相关资源
最近更新 更多