解决python ftplib下载文件乱码问题

ftplib的源文件中,默认编码是encoding = "latin-1",而我们正常显示的编码可能是gbk,由于编码的不同,会导致查询返回来的文件名不正确 。比如这样:

解决python ftplib下载文件乱码问题

文章插图
 
这就是编码问题造成的 。解决方法也很简单,
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是字符串的两个方法,分别是编码,和解码,解码后就可以正常显示文件名:
解决python ftplib下载文件乱码问题

文章插图
 
知道这个原因,就可以下载文件了,比如:
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()返回路径下的文件列表,按需要下载就可,下载过程如果要提示正确文字,就是编码--解码,或解码--编码就可以了 。
希望我的记录给你有帮助 。




    推荐阅读