python通过ftp上传以中文命名的文件,由于编码而造成不能上传,报错的问题

ftp是常用的文件传输协议,在python中使用ftp传输时一般采用ftplib的包来进行文件传输;在进行文件传输时,当文件名是中文时,一般报错:
UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position 5-8: ordinal not in range(256)
这是由于ftplib包中的编码方式一般为latin-1,而latin-1不能对中文名称进行编码,所以导致报错,常见的解决方法有:
1:修改ftplib包源码,即修改ftplib.py这个py文件
将encoding = “latin-1” 修改成encoding =“utf-8”
2:在构建ftp对象的时候重新定义编码格式
如:
ftp = ftplib.FTP()
ftp.connect(host, port)
ftp.login(username, password)
#ftp.encoding=‘GB2312’
ftp.encoding='utf-8

发布了15 篇原创文章 · 获赞 3 · 访问量 381

猜你喜欢

转载自blog.csdn.net/weixin_44520602/article/details/104827472