如何解决Python FTPlib正在使用unix clrf而不是Windows cldf
我在Windows PC上,正在尝试从FTP下载文件。文件下载正常,但是当我在记事本中打开文件时,唯一的问题是它与Unix(LF)一起显示。我尝试了几个不同的修复程序,以使其能够成为Windows(CRLF),但没有任何效果。该文件是UTF-16-LE编码的文件。
这里有两个来源,我看过两个解决方法,但是没有:
How to correctly download files using ftplib so line breaks are added for windows
https://effbot.org/librarybook/ftplib.htm
我的代码当前如下:
def downloadFiles(self,files,localFolder):
with FTP(host=self.host,user=self.username,passwd=self.password) as ftp:
ftp.cwd(self.root)
for file in files:
with open(os.path.join(localFolder,file.fileName),'w',newline=None) as f:
ftp.retrlines(f'RETR {file.fileName}',lambda line,file=f: file.write(line+'\n'))
我尝试了 line +'\ r \ n ,但是它只是增加了一个额外的行空间。
任何人都有解决此问题的想法吗?
解决方法
如果将来有人遇到utf-16文件问题,则只需将ftp编码设置为utf-16。我在文件级别寻找编码选项,但是显然您需要在连接级别进行设置。
with FTP(host=self.host,user=self.username,passwd=self.password) as ftp:
ftp.encoding = 'utf-16'
ftp.cwd(self.root)
for file in files:
with open(os.path.join(localFolder,file.fileName),'w',encoding='utf-16') as f:
ftp.retrlines(f'RETR {file.fileName}',lambda line: f.write(line + '\n'))
,
有一个简单的命令行实用程序unix2dos。
您可以在ftp之后的文件上使用unix2dos
实用程序。
如果您正在文本编辑文件,请使用Notepad++
。
使用Notepad++
,您还可以管理文件的换行格式及其编码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。