【问题标题】:Fill variable with text of a .txt file at an FTP server in Python在 Python 中的 FTP 服务器上用 .txt 文件的文本填充变量
【发布时间】:2017-12-07 11:12:23
【问题描述】:

我认为我的问题听起来有点愚蠢,但我对 python 编程还是很陌生。

我只想有一个文本变量,它从 FTP 服务器上的 .txt 文件中获取字符串。

总之:有一个 .txt 文件存储在 FTP 服务器上,我想将此文件的内容存储在一个变量中...

这就是我目前所拥有的......有人可以帮助我吗?我使用 Python 3.6.3 :) 在此先感谢!

from ftplib import FTP

ftp = FTP('1bk2t.ddns.net')
ftp.login(user='User', passwd = 'Password')

ftp.cwd('/path/')

filename = 'filename.txt'

ftp.retrbinary("RETR " + filename, open(filename, 'wb').write)
ftp.quit()

var = localfile.read

【问题讨论】:

    标签: python ftp ftplib


    【解决方案1】:

    如果您想将文本文件内容下载到内存,而不使用任何临时文件,请使用FTP.retrlines,例如:

    contents = ""
    def collectLines(s):
        global contents
        contents += s + "\n"
    
    ftp.retrlines("RETR " + filename, collectLines)
    

    或者使用数组:

    lines = []
    ftp.retrlines("RETR " + filename, lines.append)
    

    【讨论】:

      【解决方案2】:

      您可以使用StringIO 作为retrlines RETR 的缓冲区:

      import io
      
      with io.StringIO() as buffer_io:
          ftp.retrlines(f'RETR {filename}', buffer_io.write)
          content = buffer_io.getvalue()
      

      【讨论】:

      • 这样你就失去了 EOL。
      • 是的,但有时这并不重要,例如对于 JSON/XML/HTML 之类的文件。
      • 好的,但您至少应该在回答中提及这一点。甚至在 XML/HTML 中 一些 新行也很重要。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      相关资源
      最近更新 更多