Recientemente, la demanda es la necesidad de abordar las otras imágenes en la ftp para proporcionar acceso al servidor local, el pensamiento previsto inicialmente es utilizar las operaciones de Shell, debido a que el depósito propiamente dicho también es compatible con los comandos FTP en una demanda de bucle puede lograr. Pero entonces pensar en la operación o toma pitón; luego procede Baidu en línea; sin excepción, estaba tan decepcionado que no se puede copiar directamente en uso. Así, en un código modificado. Todavía un poco de corazón para aprender cosas, siempre y cuando el código de contraseña de la cuenta ftp operación específica se ha modificado para utilizar el directorio correspondiente
Cabe señalar en este punto a destacar es el uso os.path.join
#! / Usr / bin / python
# - * - coding:. UTF-8 - * -
"" "
la operación FTP común
" ""
de ftplib Importe el FTP
Importación OS
clase FTP_OP (Objeto):
DEF la __init __ (self, host, nombre de usuario, contraseña, puerto):
"" "
inicializar el FTP
: Host param: el IP del servidor FTP
: nombre de usuario param: el nombre de usuario FTP
: contraseña param: contraseña ftp
: puerto param: puerto FTP (por defecto 21)"
""
self.host = alojado
Ser. nombre de usuario = nombre de usuario
self.password = contraseña
self.port = Puerto
DEF FTP_CONNECT (Ser):
"" "
FTP conectado
: retorno:
" ""
Ftp = FTP ()
ftp.set_debuglevel (1) # no el modo de depuración se volvió
ftp.connect (host = self.host, puerto = self.port) # conectan el FTP
ftp.login (self.username, self.password) # Entrar en el FTP
ftp.set_pasv (Falso ) ## ftp hay necesidades modo activo y pasivo que se deben ajustar
retorno ftp
DEF download_file (ser, ftp_file_path, dst_file_path):
"" "
de la descarga ftp a su
: ftp_file_path param: ftp ruta del archivo de descarga
: param dst_file_path: ruta de almacenamiento local
: el regreso:
" ""
bUFFER_SIZE = 102400 # defecto es 8192
ftp = self.ftp_connect ()
Imprimir (ftp.getwelcome) () # ftp información de acceso
lista_de_archivos = ftp.nlst (ftp_file_path)
para nombre_archivo en lista_de_archivos:
imprimir ( "file_name" + file_name)
ftp_file = os.path.join (ftp_file_path, file_name)
print ( "ftp_file:" + ftp_file)
#write_file = os.path.join (dst_file_path, file_name)
write_file = dst_file_path + file_name ##在这里如果使用os.path.join进行拼接的话会丢失dst_file_path路径,与上面的拼接路径不一样
de impresión ( "write_file" + write_file)
si file_name.find ( 'png')> - 1 y no os.path. existe (write_file):
print ( "file_name:" + file_name)
#ftp_file = os.path.join (ftp_file_path, file_name)
#write_file = os.path.join (dst_file_path, file_name)
con abierto (write_file, "wb") como F:
ftp.retrbinary ( 'RETR% s' % ftp_file, f.write, buffer_size)
# f.close ()
ftp.quit ()
si __name__ == '__main__':
host = "192.168.110 **"
nombre de usuario = " ****"
password = "****"
port = 21
ftp_file_path = "/ erp-mall /" #FTP目录
dst_file_path = "/ root / 11" #本地目录
ftp = FTP_OP (host = servidor, usuario = nombre de usuario , contraseña = contraseña, port = puerto)
ftp.download_file (ftp_file_path = ftp_file_path, dst_file_path = dst_file_path)