Bus*_*ken 8 python ftp utf-8 ftplib python-3.x
嗨,我正在使用模块ftplib.并使用以下代码列出我的文件:
files=[]
files = ftp.nlst()
Run Code Online (Sandbox Code Playgroud)
并使用以下代码将它们写入文本文件:
for item in files:
filenames.write(item +'\n')
Run Code Online (Sandbox Code Playgroud)
但是有一个编码问题,如果我的文件名有'ı,ğ,ş'字符,它无法读取这个并写入文件'?' 代替.
如何正确阅读?
小智 9
Python 3.x使用默认编码ISO-8859-1作为文件名.
要将UTF-8编码用于服务器的文件名,您需要添加以下行:
ftpConnector = ftplib.FTP(host,user,password) # connection
ftpConnector.encoding='utf-8' #force encoding for file name in utf-8 rather than default that is iso-8889-1
Run Code Online (Sandbox Code Playgroud)
然后你可以使用:
ftpConnector.storbinary( 'STOR '+fileName, file) # filename will be utf-8 encoded
Run Code Online (Sandbox Code Playgroud)
在将项目写入文件之前,您需要将结果项目转换回 unicode。ftp 模块不支持 unicode 字符串。要执行此操作,请尝试:
import encodings.idna
for item in files:
filenames.write(encodings.idna.ToUnicode(item) + '\n')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3456 次 |
| 最近记录: |