【问题标题】:Use of readline function with Python StringIO module在 Python StringIO 模块中使用 readline 函数
【发布时间】:2013-10-21 04:01:13
【问题描述】:

我正在尝试从 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()

【问题讨论】:

    标签: python encoding ftp newline stringio


    【解决方案1】:

    根据FTP.retrlines documentation

    ... 为每一行调用回调函数,字符串参数包含带有尾随 CRLF 剥离 的行。 ....

    retrlines 替换为retrbinary

    或者,您可以..retrlines .. 行如下(附加换行符):

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

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 2015-11-14
      • 2016-04-01
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 2014-05-23
      相关资源
      最近更新 更多