2013-05-17 3 views
0

Я не знаю, что я делаю неправильно, но этот небольшой ftp-код не будет передавать файлы. Я продолжаю получатьPython FTP не переносит

Файл «example.py», строка 11, in? ftp.storlines ("СТОР" + файл, открытый (файл))

ftplib.error_perm: 550 /home/helen/docs/example.txt: Операция не допускается

Вот код:

import ftplib 

file = '/home/helen/docs/example.txt'  
ftp = ftplib.FTP('domain', 'user', 'password') 
print "File List: " 
files = ftp.dir() 

ftp.cwd("/upload/") 

ftp.storlines("STOR " + file, open(file)) 

f.close()        
s.quit() 

Любая помощь будет оценена по достоинству.

ответ

6

Я думаю, что ошибка, которую вы получаете, заключается в том, что вы добавляете весь путь к первому аргументу в вызове storlines(). Вместо этого просто указать имя файла сам:

import os 
ftp.storlines("STOR " + os.path.basename(file), open(file)) 

Вы могли бы хотеть рассмотреть вопрос об изменении file в filepath, так это то, что это на самом деле (плюс вы никогда больше не скрывает встроенную функцию & типа того же имя).

+0

Спасибо @martineau - я проверю свой код, когда вернусь в офис в понедельник. Не иметь доступа к серверу из дома. –

+0

@Helen: Ой, мой оригинальный ответ был полностью неправильным. Попробуйте переработанную версию, когда у вас есть шанс. – martineau

+0

спасибо за подсказку. просто вызов имени файла, а не всего пути сделал трюк. Удивительный материал. Еще раз спасибо :) –

0

550 ошибка буквально означает согласно wikipedia "550 Требуемое действие не выполнено. Файл недоступен (например, файл не найден, нет доступа)."

http://en.wikipedia.org/wiki/List_of_FTP_server_return_codes

вы уверены, что у вас есть права доступа?

попробовать это

ftp = ftplib.FTP('domain') 
ftp.login('user','pass') 

я считаю, что создание объекта было просто немного измученный.

+0

У меня есть соответствующие разрешения - для ftp-каталога было предоставлено 777 разрешений. Это означает, что кто-то может загружать и читать (только для тестирования) –

+0

это публичный или частный ftp? правильно ли введен домен? если вы получаете 550, он думает, что что-то не так .... lemme проверить что-то очень быстро .... try 'ftp = ftplib.FTP ('domain')' THEN 'ftp.login ('user', 'pass') 'Я думаю, вы на самом деле пытаетесь войти в ничто, что было бы веской причиной для 550 – TehTris

+0

Эй, @Teh, спасибо. Попробуй свое предложение в понедельник, и пусть все узнают результат. –

Смежные вопросы