2

I think my question sounds kinda stupid but I'm pretty new to python programming.

I just want to have a text variable which gets a string from a .txt file at an FTP server.

So in conclusion: There is a .txt File stored at an FTP server and I want to have the content of this file stored in an variable...

This is what I have so far... Can anybody help me? I use Python 3.6.3 :) thanks in advance!

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
Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992

2 Answers2

2

If you want to download a text file contents to memory, without using any temporary file, use FTP.retrlines like:

contents = ""
def collectLines(s):
    global contents
    contents += s + "\n"

ftp.retrlines("RETR " + filename, collectLines)

Or use an array:

lines = []
ftp.retrlines("RETR " + filename, lines.append)
Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992
-1

You can use StringIO as buffer for retrlines RETR:

import io

with io.StringIO() as buffer_io:
    ftp.retrlines(f'RETR {filename}', buffer_io.write)
    content = buffer_io.getvalue()
Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992
mastak
  • 343
  • 3
  • 11