Я пытался настроить автоматический скрипт Python для загрузки файлов с удаленного FTP-сервера на локальный компьютер.Мне удалось установить соединение, перейти в каталог, однако при попытке загрузить определенный zip-файл я получаю сообщение об ошибке.
[Errno 13] В доступе отказано: 'C: \ Users \ kbrab \ Desktop \ 2019\ test.zip '
Я пытался запустить IDLE от имени администратора, я также проверил, чтобы убедиться, что каталог локального пути создан и правильный.Проверка других подобных сообщений, которые, казалось, были проблемой.FTP-сервер использует неявное шифрование TLS / SSL, файл python запускается на виртуальной машине Windows.
def checkKindred():
time = a_day_in_previous_month()
print(time)
lines = []
ftp_client.cwd('/kindred/')
print("Current directory: " + ftp_client.pwd())
ftp_client.retrlines('NLST',lines.append)
nameCh = ("Attrition_"+str(time))
for line in lines:
if nameCh == line[:17]:
print("found match")
print(line)
fileName = line
unpackKindred(fileName,time)
def unpackKindred(name,time):
local_path = "C:\\Users\\kbrab\\Desktop"
local_path = os.path.join(local_path, str(time)[:4],"Attrition_2019-04-30.zip")
if not os.path.exists(local_path):
os.makedirs(local_path)
try:
filenames = ftp_client.nlst()
ftp_client.retrbinary('RETR '+name, open(local_path, 'wb').write)
except Exception as e:
print('Failed to download from ftp: '+ str(e))
Код теперь работает с точки зрения Мартина, добавив исправленный код ниже:
def unpackKindred(name,time):
local_path = "C:\\Users\\kbrab\\Desktop"
local_path = os.path.join(local_path, str(time)[:4])
if not os.path.exists(local_path):
os.makedirs(local_path)
filename = os.path.join(local_path, name)
file = open(filename, "wb")
ftp_client.retrbinary("retr " + name, file.write)