Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: download a file from an FTP server

I'm trying to download some public data files. I screenscrape to get the links to the files, which all look something like this:

ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/nhanes/2001-2002/L28POC_B.xpt 

I can't find any documentation on the Requests library website.

like image 252
user1507455 Avatar asked Aug 01 '12 21:08

user1507455


2 Answers

requests library doesn't support ftp links.

To download a file from FTP server you could:

import urllib   urllib.urlretrieve('ftp://server/path/to/file', 'file') # if you need to pass credentials: #   urllib.urlretrieve('ftp://username:password@server/path/to/file', 'file') 

Or:

import shutil import urllib2 from contextlib import closing  with closing(urllib2.urlopen('ftp://server/path/to/file')) as r:     with open('file', 'wb') as f:         shutil.copyfileobj(r, f) 

Python3:

import shutil import urllib.request as request from contextlib import closing  with closing(request.urlopen('ftp://server/path/to/file')) as r:     with open('file', 'wb') as f:         shutil.copyfileobj(r, f) 
like image 143
jfs Avatar answered Sep 18 '22 23:09

jfs


You Can Try this

import ftplib  path = 'pub/Health_Statistics/NCHS/nhanes/2001-2002/' filename = 'L28POC_B.xpt'  ftp = ftplib.FTP("Server IP")  ftp.login("UserName", "Password")  ftp.cwd(path) ftp.retrbinary("RETR " + filename, open(filename, 'wb').write) ftp.quit() 
like image 43
Rakesh Avatar answered Sep 20 '22 23:09

Rakesh