【问题标题】:Is there a simple way to make lists behave as files (with ftplib)有没有一种简单的方法可以使列表表现为文件(使用 ftplib)
【发布时间】:2011-01-28 12:06:10
【问题描述】:

我想使用 ftplib 将程序生成的数据作为列表上传。我能看到的最接近的方法是 ftp.storlines,但这需要一个带有 readlines() 方法的文件对象。

显然我可以创建一个文件,但这似乎有点矫枉过正,因为数据不是持久的。

有什么可以做到的吗?:

session = ftp.new(...)
upload = convertListToFileObject(mylist)
session.storlines("STOR SOMETHING",upload)
session.quit

【问题讨论】:

    标签: python ftp file-upload list iterator


    【解决方案1】:

    您总是可以使用StringIO (documentation),它是一个类似于文件的对象的内存缓冲区。

    from io import StringIO    # version < 2.6: from StringIO import StringIO
    
    buffer = StringIO()
    buffer.writelines(mylist)
    buffer.seek(0)
    
    session.storlines("...", buffer)
    

    请注意,writelines 方法不添加行分隔符。所以你需要确保 mylist 中的每个字符串都以\n 结尾。如果 mylist 中的项目不以 \n 结尾,您可以这样做:

    buffer.writelines(line + '\n' for line in mylist)
    

    【讨论】:

    • 请注意,您可能更喜欢cStringIO 模块而不是StringIO 模块(如果您没有使用io 模块)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 2019-06-15
    • 1970-01-01
    • 2019-03-10
    相关资源
    最近更新 更多