Мне нужно скопировать несколько файлов из FTP-сервера в локальную папку.
Как это реализовать на Python?
В дальнейшем я буду копировать файлы в сетевую папку и добавлять скопированные файлы в архив, но пока тренируюсь просто копировать файл в локальную папку без добавления в архив.
Вот как я пытаюсь сделать:
from ftplib import FTP
import os
ftp = FTP("tipftp")
ftp.login(user="tuserftp", passwd="tpssword")
local_file = '/Users/tuser/Documents/py/test/testfile.txt'
#files = ftp.nlst('/Backups/tdir/*.xml')
files = ftp.nlst('/Backups/tdir/MRBTS881364.xml')
#print(files)
for file in files:
#print(file)
file_list=[]
file_list.append(file)
file_list1=str(file_list)
print(file_list1)
with open(local_file, 'wb') as tempfile:
#print("Работа с файлом testfile")
ftp.retrbinary('RETR' + file_list1, tempfile.write)
#ftp.retrbinary('retr ' + str(files), tempfile.write)
ftp.quit()
#source:
# https://sky.pro/media/rabota-s-fajlami-v-python-kak-poluchit-spisok-vseh-fajlov-v-direktorii/
# https://docs.python.org/3/library/ftplib.html
# https://sky.pro/media/kak-ispolzovat-python-dlya-raboty-s-ftp/
# https://pythonworld.ru/tipy-dannyx-v-python/spiski-list-funkcii-i-metody-spiskov.html
# https://dvmn.org/encyclopedia/python_intermediate/python_lists/
# https://metanit.com/python/tutorial/4.1.php
# https://lavrynenko.com/python-ftplib-skachat-fajl/
Здесь сначала пытаюсь скопировать все файлы /Backups/tdir/*.xml, добавляя в список. потом я попробовал хотя бы один файл из данной папки MRBTS881364.xml скачать.
Выходит следующая ошибка:
PS C:\Users\tuser\Documents\py> python .\tpy.py
['/Backups/tdir/MRBTS881364.xml']
Traceback (most recent call last):
File "C:\Users\tuser\Documents\py\tpy.py", line 13, in <module>
ftp.retrbinary('RETR %s' %file_list1, tempfile.write)
File "C:\Program Files\Python310\lib\ftplib.py", line 436, in retrbinary
with self.transfercmd(cmd, rest) as conn:
File "C:\Program Files\Python310\lib\ftplib.py", line 393, in transfercmd
return self.ntransfercmd(cmd, rest)[0]
File "C:\Program Files\Python310\lib\ftplib.py", line 359, in ntransfercmd
resp = self.sendcmd(cmd)
File "C:\Program Files\Python310\lib\ftplib.py", line 281, in sendcmd
return self.getresp()
File "C:\Program Files\Python310\lib\ftplib.py", line 254, in getresp
raise error_perm(resp)
ftplib.error_perm: 550 Failed to open file.
/Backups/tdir/ это папка, из которой мне нужно скачать файлы формата
XML.
Как мне это сделать?