Skip to content Skip to sidebar Skip to footer

Python Read File Into Memory For Repeated Ftp Copy

I need to read a local file and copy to remote location with FTP, I copy same file file.txt to remote location repeatedly hundreds of times with different names like f1.txt, f2.txt

Solution 1:

Simply open it before the loop, and close it after:

fp = open('file.txt', 'rb')

for i inrange(1,101):
    fname = 'file'+ str(i) +'.txt'
    fp.seek(0)
    ftp.storbinary('STOR ' + fname, fp)

fp.close()  

Update Make sure you add fp.seek(0) before the call to ftp.storbinary, otherwise the read call will exhaust the file in the first iteration as noted by @eryksun.

Update 2 depending on the size of the file it will probably be faster to use BytesIO. This way the file content is saved in memory but will still be a file-like object (ie it will have a read method).

from io import BytesIO

with open('file.txt', 'rb') as f:
    output = BytesIO()
    output.write(f.read())

for i in range(1, 101):
    fname = 'file' + str(i) + '.txt'output.seek(0)
    ftp.storbinary('STOR ' + fname, fp)

Post a Comment for "Python Read File Into Memory For Repeated Ftp Copy"