<返回更多

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

2022-03-15    高腾岳
加入收藏

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远程目录(路径)

远端切换到相应路径下面,给出正确的文件名,就可以下载文件了。

list1 = ftp.nlst()

返回路径下的文件列表,按需要下载就可,下载过程如果要提示正确文字,就是编码--解码,或解码--编码就可以了。

希望我的记录给你有帮助。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>