在Python StringIO模块中使用readline函数

在Python StringIO模块中使用readline函数,python,encoding,ftp,newline,stringio,Python,Encoding,Ftp,Newline,Stringio,我试图从FTP站点读取一个文件,并一次处理一行。我从FTP服务器写入一个StringIO对象并调用readline函数,但这会返回整个文件,而不是第一行。我把这个文件下载到我的电脑上,用一个十六进制编辑器对它进行了检查,该文件使用x0d0a作为换行符,或者使用带换行符的回车符。有人能告诉我哪里出了问题吗 提前谢谢 #!/usr/bin/python import ftplib import StringIO settles = StringIO.StringIO() ftp = ftplib.F

我试图从FTP站点读取一个文件,并一次处理一行。我从FTP服务器写入一个StringIO对象并调用readline函数,但这会返回整个文件,而不是第一行。我把这个文件下载到我的电脑上,用一个十六进制编辑器对它进行了检查,该文件使用x0d0a作为换行符,或者使用带换行符的回车符。有人能告诉我哪里出了问题吗

提前谢谢

#!/usr/bin/python
import ftplib
import StringIO
settles = StringIO.StringIO()
ftp = ftplib.FTP('ftp.cmegroup.com')   
ftp.login() 
ftp.cwd('pub/settle/')             
ftp.retrlines('RETR cbt.settle.s.txt', settles.write) 
settles.seek(0)
print settles.readline()
根据报告:

。。。回调函数是为每一行调用的,每一行都有一个字符串参数,该参数包含带有尾部CRLF的行

将Retrline替换为

或者,您可以..重新排列。。添加换行符的行如下所示:

ftp.retrlines('RETR cbt.settle.s.txt', lambda line: settles.write(line + '\n')) 
根据报告:

。。。回调函数是为每一行调用的,每一行都有一个字符串参数,该参数包含带有尾部CRLF的行

将Retrline替换为

或者,您可以..重新排列。。添加换行符的行如下所示:

ftp.retrlines('RETR cbt.settle.s.txt', lambda line: settles.write(line + '\n'))