ftplib的源文件中,默认编码是encoding = "latin-1",而我们正常显示的编码可能是gbk,由于编码的不同,会导致查询返回来的文件名不正确 。比如这样:
文章插图
这就是编码问题造成的 。解决方法也很简单,
list = ftp.dir()ll = list[4].encode(encoding='latin-1').decode(encoding='gbk'remote_path = '/' + list[4].split(' ')[-1]print(remote_path)ftp.cwd(remote_path)# 设置FTP远程目录(路径)list1 = ftp.nlst()#print(list1[0])#print(list1[1])file1 = list1[0].encode(encoding='latin-1').decode(encoding='gbk')file2 = list1[1].encode(encoding='latin-1').decode(encoding='gbk')
把‘latin-1’编码文件名,按gbk格式解码,encode和decode是字符串的两个方法,分别是编码,和解码,解码后就可以正常显示文件名:文章插图
知道这个原因,就可以下载文件了,比如:
list = ftp.dir()
虽然返回的值不能识别,但是在远端,latin-1编码下,他是正确的,list的最后列为文件夹名,list[4].split(' ')[-1]就可以返回正确的文件名,如果需要电脑正确显示,就需要编码,再解码 。remote_path = '/' + list[4].split(' ')[-1]print(remote_path)ftp.cwd(remote_path)# 设置FTP远程目录(路径)
【解决python ftplib下载文件乱码问题】远端切换到相应路径下面,给出正确的文件名,就可以下载文件了 。list1 = ftp.nlst()
返回路径下的文件列表,按需要下载就可,下载过程如果要提示正确文字,就是编码--解码,或解码--编码就可以了 。希望我的记录给你有帮助 。
推荐阅读
- python网络爬虫基于selenium爬取斗鱼直播信息
- httpx:一个 Python Web 客户端
- 解决L2TP 隧道客户端分流问题
- 手把手教你分析解决MySQL死锁问题
- 音响啸叫怎么解决?
- 1600万像素USB摄像头拍照颜色不对怎么办?一次白平衡解决偏色
- 工商银行交易异常暂停服务怎么解决?
- 用 Python 实现十大经典排序算法
- macbook屏幕模糊如何解决?
- svchost占用内存高,重装系统依然如此,怎么解决?