я использую следующее размораживание для загрузки файлов, процесс, чтобы проверить, если каталог существует, или нет, если не он должен создать его затем загрузить файл,питон метод FTP - Ошибка 553 Не удалось создать файл
я продолжать получать эту ошибку, тем временем, если я соединиться с тем же пользователем и ПАРОЛЬ к FTP я могу создавать каталоги, я использую vsftp как сервер
def uploadFTP(filepath, filename_new, env):
global config
ftpsrv = config[env]["ftpsrv"]
ftpusr = config[env]["ftpuser"]
ftppwd = config[env]["ftppass"]
filename = os.path.basename(filename_new)
today = datetime.datetime.now()
today_path = today.strftime("%Y/%m/%d")
filename=os.path.join(today_path, filename)
if not os.path.exists(os.path.join(os.path.dirname(filepath), today_path)):
os.makedirs(os.path.join(os.path.dirname(filepath), today_path))
try:
ftp = ftplib.FTP(ftpsrv)
ftp.login(ftpusr, ftppwd)
except:
logger.error("Ftp connection error has occurred")
raise
else:
f = open(filepath, "r")
cmd = "STOR %s" %(filename)
out = ftp.storbinary(cmd, f)
f.close()
ftp.quit()
return out
ошибку следующим образом:
File "/usr/lib64/python2.6/ftplib.py", line 218, in getresp
raise error_perm, resp
error_perm: 553 Could not create file.
Любой ADV здесь?
Update:
изменил функцию следующим образом
def uploadFTP(filepath, filename_new, env):
global config
ftpsrv = config[env]["ftpsrv"]
ftpusr = config[env]["ftpuser"]
ftppwd = config[env]["ftppass"]
filename = os.path.basename(filename_new)
today = datetime.datetime.now()
today_path = today.strftime("%Y/%m/%d")
filename=os.path.join(today_path, filename)
if not os.path.exists(os.path.join(os.path.dirname(filepath), today_path)):
os.makedirs(os.path.join(os.path.dirname(filepath), today_path))
try:
ftp = ftplib.FTP(ftpsrv)
ftp.login(ftpusr, ftppwd)
except:
logger.error("Ftp connection error has occurred")
raise
else:
f = open(filepath, "r")
ftp.mkd(today_path)
cmd = "STOR %s" %(filename)
out = ftp.storbinary(cmd, f)
f.close()
ftp.quit()
return out
и я получаю
ftp.mkd(today_path)
File "/usr/lib64/python2.6/ftplib.py", line 556, in mkd
resp = self.sendcmd('MKD ' + dirname)
File "/usr/lib64/python2.6/ftplib.py", line 243, in sendcmd
return self.getresp()
File "/usr/lib64/python2.6/ftplib.py", line 218, in getresp
raise error_perm, resp
error_perm: 550 Create directory operation failed
Примечание: разрешение в папку FTP является 777 и владелец имеет полный доступ на чтение и запись, если я подключаюсь через ftp, я могу создавать папки, но через эту функцию i cant
посоветуйте пожалуйста
его возвращение ошибки IOError: [ Errno 2] Нет такого файла или каталога:, он должен создать папку в удаленном месте, а затем поместить туда файл .. его не делать – Jecki
Вам нужно сначала вызвать 'ftp.mkd (путь к файлу)', если каталог не существует – Jaco
Ваш 'сегодняшний_path' содержит косые черты, вы хотите создать подпапки? – Jaco