【问题标题】:Python script to download file from FTP site从 FTP 站点下载文件的 Python 脚本
【发布时间】:2014-08-25 07:19:08
【问题描述】:

我有一台笔记本电脑,它有一个静态 IP (193.2.1.8),是一个小型本地专用网络的一部分,无法访问互联网。很多时候,我需要执行以下操作:

  1. 从笔记本电脑上断开专用网络的网线。
  2. 将笔记本电脑连接到可以访问互联网的局域网电缆。
  3. 在 windows 网络配置中将 IP 配置从 静态 IP 更改为 自动检测
  4. 打开 FileZilla(一个 FTP 程序)并将其连接到 FTP 站点,选择一个文件(一个已知的文件名)并下载到硬盘上的特定位置。
  5. 然后断开可以上网的网线。
  6. 把私网的网线接回去。
  7. 将 IP 配置改回原来的静态 IP 和子网掩码。

我想简单介绍一下这个过程。因此考虑创建一个 Python 脚本,将

  1. 自动更改 windows 的 IP 配置。
  2. 连接到 FTP 站点并将文件下载到某个位置。
  3. 将 IP 配置改回原来的设置。

感谢 SO 上建议使用 WMI 模块的帖子,我设法使用 WMI 模块更改 IP 配置,如下所示:

import wmi
nic_configs=wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True)
nic = nic_configs[0]
nic.EnableDHCP()

但我现在的问题是,我如何知道我是否可以安全地进行 FTP 操作?启用 DHCP 后如何知道 Internet 连接是否在线?

对于FTP操作,我正在考虑使用ftplib

有没有更好的方法来解决这个问题?

仅供参考:我使用的是 windows XP SP3 32 位,python 2.7.5

【问题讨论】:

标签: python python-2.7 ftp wmi ftplib


【解决方案1】:

我如何知道我是否可以安全地进行 FTP 操作?

使用 ftplib 的第一步是创建一个FTP 实例。如果你给它一个主机名,那么方法调用connect(host) 就是为你创建的。如果网络不可达,它将在连接尝试中失败并引发异常。还有一个超时选项来设置连接超时。

如果连接尝试成功,您的网络适配器显然已准备就绪。如果引发了异常,则不是。您可以在此基础上构建连接逻辑(理想情况下使用重试装饰器,或者甚至是一个简单的循环,每次尝试之间有一个小睡眠)。

【讨论】:

  • 请求宽恕比请求许可更容易绝对是要走的路
猜你喜欢
  • 2011-05-29
  • 1970-01-01
  • 2021-10-10
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多