[PYTHON] Python ftplib로 FTP를 통해 파일을 다운로드하는 방법
PYTHONPython ftplib로 FTP를 통해 파일을 다운로드하는 방법
FTP 서버에 쉽게 연결하고 zip 파일을 여는 다음 코드를 가지고 있습니다. 해당 파일을 로컬 시스템에 다운로드하고 싶습니다. 그렇게하는 방법?
# Open the file for writing in binary mode
print 'Opening local file ' + filename
file = open(filename, 'wb')
# Download the file a chunk at a time
# Each chunk is sent to handleDownload
# We append the chunk to the file and then print a '.' for progress
# RETR is an FTP command
print 'Getting ' + filename
ftp.retrbinary('RETR ' + filename, handleDownload)
# Clean up time
print 'Closing file ' + filename
file.close()
해결법
-
==============================
1.
ftp.retrbinary('RETR %s' % filename, file.write)
-
==============================
2.
A = filename ftp = ftplib.FTP("IP") ftp.login("USR Name", "Pass") ftp.cwd("/Dir") try: ftp.retrbinary("RETR " + filename ,open(i, 'wb').write) except: print "Error"
-
==============================
3.
FILENAME = 'StarWars.avi' with ftplib.FTP(FTP_IP, FTP_LOGIN, FTP_PASSWD) as ftp: ftp.cwd('movies') with open(FILENAME, 'wb') as f: ftp.retrbinary('RETR ' + FILENAME, f.write)
물론 가능한 오류를 처리하는 것이 현명합니다.
-
==============================
4.파이썬 표준 라이브러리의 ftplib 모듈은 어셈블러와 비교 될 수 있습니다. 다음과 같은 고수준 라이브러리를 사용하십시오 : https://pypi.python.org/pypi/ftputil
파이썬 표준 라이브러리의 ftplib 모듈은 어셈블러와 비교 될 수 있습니다. 다음과 같은 고수준 라이브러리를 사용하십시오 : https://pypi.python.org/pypi/ftputil
-
==============================
5.이것은 나를 위해 잘 작동하는 파이썬 코드입니다. 댓글은 스페인어로되어 있지만 앱은 이해하기 쉽습니다.
이것은 나를 위해 잘 작동하는 파이썬 코드입니다. 댓글은 스페인어로되어 있지만 앱은 이해하기 쉽습니다.
# coding=utf-8 from ftplib import FTP # Importamos la libreria ftplib desde FTP import sys def imprimirMensaje(): # Definimos la funcion para Imprimir el mensaje de bienvenida print "------------------------------------------------------" print "-- COMMAND LINE EXAMPLE --" print "------------------------------------------------------" print "" print ">>> Cliente FTP en Python " print "" print ">>> python <appname>.py <host> <port> <user> <pass> " print "------------------------------------------------------" def f(s): # Funcion para imprimir por pantalla los datos print s def download(j): # Funcion para descargarnos el fichero que indiquemos según numero print "Descargando=>",files[j] fhandle = open(files[j], 'wb') ftp.retrbinary('RETR ' + files[j], fhandle.write) # Imprimimos por pantalla lo que estamos descargando #fhandle.close() fhandle.close() ip = sys.argv[1] # Recogemos la IP desde la linea de comandos sys.argv[1] puerto = sys.argv[2] # Recogemos el PUERTO desde la linea de comandos sys.argv[2] usuario = sys.argv[3] # Recogemos el USUARIO desde la linea de comandos sys.argv[3] password = sys.argv[4] # Recogemos el PASSWORD desde la linea de comandos sys.argv[4] ftp = FTP(ip) # Creamos un objeto realizando una instancia de FTP pasandole la IP ftp.login(usuario,password) # Asignamos al objeto ftp el usuario y la contraseña files = ftp.nlst() # Ponemos en una lista los directorios obtenidos del FTP for i,v in enumerate(files,1): # Imprimimos por pantalla el listado de directorios enumerados print i,"->",v print "" i = int(raw_input("Pon un Nº para descargar el archivo or pulsa 0 para descargarlos\n")) # Introducimos algun numero para descargar el fichero que queramos. Lo convertimos en integer if i==0: # Si elegimos el valor 0 nos decargamos todos los ficheros del directorio for j in range(len(files)): # Hacemos un for para la lista files y download(j) # llamamos a la funcion download para descargar los ficheros if i>0 and i<=len(files): # Si elegimos unicamente un numero para descargarnos el elemento nos lo descargamos. Comprobamos que sea mayor de 0 y menor que la longitud de files download(i-1) # Nos descargamos i-1 por el tema que que los arrays empiezan por 0
from https://stackoverflow.com/questions/11573817/how-to-download-a-file-via-ftp-with-python-ftplib by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] matplotlib 범례에 이미지 삽입 (0) | 2018.11.19 |
---|---|
[PYTHON] import httplib ImportError : httplib이라는 모듈이 없습니다. (0) | 2018.11.19 |
[PYTHON] 파이썬 setup.py가 트래비스 CI에서 잘못된 명령 'bdist_wheel'을 말하는 이유는 무엇입니까? (0) | 2018.11.19 |
[PYTHON] 파이썬에서 "문자열"과 "문자열"사이에 어떤 차이가 있습니까? [복제] (0) | 2018.11.19 |
[PYTHON] 플라스크 서버에서 콘솔 메시지 사용 중지 (0) | 2018.11.19 |