Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Script Uploading files via FTP

Tags:

python

upload

ftp

I would like to make a script to upload a file to FTP.

How would the login system work? I'm looking for something like this:

ftp.login=(mylogin) ftp.pass=(mypass) 

And any other sign in credentials.

like image 929
Frustrated Python Coder Avatar asked Sep 27 '12 03:09

Frustrated Python Coder


People also ask

How do I get files from an FTP server using Python?

The ftplib module included in Python allows you to use Python scripts to quickly attach to an FTP server, locate files, and then download them to be processed locally. To open a connection to the FTP server, create an FTP server object using the ftplib. FTP([host [, user [, passwd]]]) method.


2 Answers

Use ftplib, you can write it like this:

import ftplib session = ftplib.FTP('server.address.com','USERNAME','PASSWORD') file = open('kitten.jpg','rb')                  # file to send session.storbinary('STOR kitten.jpg', file)     # send the file file.close()                                    # close file and FTP session.quit() 

Use ftplib.FTP_TLS instead if you FTP host requires TLS.


To retrieve it, you can use urllib.retrieve:

import urllib   urllib.urlretrieve('ftp://server/path/to/file', 'file') 

EDIT:

To find out the current directory, use FTP.pwd():

FTP.pwd(): Return the pathname of the current directory on the server.

To change the directory, use FTP.cwd(pathname):

FTP.cwd(pathname): Set the current directory on the server.

like image 198
K Z Avatar answered Oct 03 '22 20:10

K Z


ftplib now supports context managers so I guess it can be made even easier

from ftplib import FTP from pathlib import Path  file_path = Path('kitten.jpg')  with FTP('server.address.com', 'USER', 'PWD') as ftp, open(file_path, 'rb') as file:         ftp.storbinary(f'STOR {file_path.name}', file) 

No need to close the file or the session

like image 41
gbonetti Avatar answered Oct 03 '22 21:10

gbonetti