Python脚本从FTP站点下载文件
我有一台笔记本电脑,它的IP地址是静态的(193.2.1.8),并且属于一个没有互联网连接的小型本地私有网络。经常我需要做以下几件事情:
- 把笔记本电脑上的私有网络的网线拔掉。
- 把笔记本电脑连接到有互联网的网线。
- 在Windows的网络设置中,把IP配置从静态IP改为自动获取。
- 打开FileZilla(一个FTP程序),连接到FTP站点,选择一个文件(一个已知的文件名),并下载到硬盘上的特定位置。
- 然后把有互联网的网线拔掉。
- 再把私有网络的网线连接回去。
- 把IP配置改回原来的静态IP和子网掩码。
我想简化这个过程。因此我在考虑创建一个Python脚本来:
- 自动更改Windows的IP配置。
- 连接到FTP站点并下载文件到指定位置。
- 把IP配置改回原来的设置。
感谢StackOverflow上的一篇帖子,建议使用WMI
模块,我成功地用WMI
模块更改了IP配置,像这样:
import wmi
nic_configs=wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True)
nic = nic_configs[0]
nic.EnableDHCP()
但我现在的问题是,怎么知道我可以安全地进行FTP操作?我怎么知道在启用DHCP后,互联网连接是否正常?
对于FTP操作,我在考虑使用ftplib
。
有没有更好的方法呢?
顺便说一下:我使用的是Windows XP SP3 32位,Python 2.7.5。
1 个回答
2
我怎么知道我可以安全地进行FTP操作呢?
使用ftplib的第一步是创建一个FTP实例。如果你提供了一个主机名,系统会自动帮你调用connect(host)
这个方法。如果网络无法连接,它会在尝试连接时失败,并且会抛出一个异常。你还可以设置一个超时选项来限制连接的时间。
如果连接成功,说明你的网络适配器是正常的。如果抛出了异常,那就说明网络不行。你可以根据这个情况来设计你的连接逻辑(最好使用重试装饰器,或者简单地用一个循环,每次尝试之间稍微等一会儿)。