Привет Я пытаюсь создать FTP-сервер и помочь развитию, которое я использую pyftpdlib. Я хотел бы сделать некоторые операции с файлами, если пользователь загружает определенный файл, но иногда он вызывает исключение, и я действительно не знаю, почему.Почему мой код вызывает исключение?
я написал свой собственный обработчик в pyftpdlib после этого урока: http://code.google.com/p/pyftpdlib/wiki/Tutorial#3.8_-_Event_callbacks
Но что-то идет ужасно неправильно иногда, когда пользователь загружает файл журнала (который я намерен делать некоторые операции с файлами на), и я не очень понять почему. У меня есть другой класс, который в основном читается из файла конфигурации, и сообщение об ошибке говорит, что он не может найти раздел FTP. Но это странно, потому что я, очевидно, имею его в своем файле конфигурации, и он работает иногда отлично.
Может возникнуть эта ошибка, потому что у меня есть два объекта «Соединение»? Это единственное, что у меня есть, поэтому я был бы очень рад, если бы кто-нибудь мог объяснить, что происходит. Вот мой код, который смущается (Nevermind чек file.name, потому что был совсем недавно добавлен):
class ArchiveHandler(ftpserver.FTPHandler):
def on_login(self, username):
# do something when user login
pass
def on_logout(self, username):
# do something when user logs out
pass
def on_file_sent(self, file):
"What to do when retrieved the file the class is watching over"
attr = Connection()
if attr.getarchive() == 'true':
t = datetime.now()
if file.name == "log.log":
try:
shutil.copy2(file, attr.getdir() + ".archive/" + str(t.strftime("%Y-%m-%d_%H:%M:%S") + '.log'))
except OSError:
print 'Could not copy file'
raise
if attr.getremain() == 'false':
try:
os.remove(file)
except OSError:
print 'Could not remove file'
raise
Полный источник: http://pastie.org/3552079
Источник конфиг-файла: http://pastie.org/3552085
Edit-> (и, конечно, ошибка):
[root]@85.230.122.159:40659 unhandled exception in instance <pyftpdlib.ftpserver.DTPHandler object at 0xb75f49ec>
Traceback (most recent call last):
File "/usr/lib/python2.6/asyncore.py", line 84, in write
obj.handle_write_event()
File "/usr/lib/python2.6/asyncore.py", line 435, in handle_write_event
self.handle_write()
File "/usr/lib/python2.6/asynchat.py", line 174, in handle_write
self.initiate_send()
File "/usr/lib/python2.6/asynchat.py", line 215, in initiate_send
self.handle_close()
File "/usr/local/lib/python2.6/dist-packages/pyftpdlib/ftpserver.py", line 1232, in handle_close
self.close()
File "/usr/local/lib/python2.6/dist-packages/pyftpdlib/ftpserver.py", line 1261, in close
self.cmd_channel.on_file_sent(filename)
File "ftp.py", line 87, in on_file_sent
File "ftp.py", line 12, in __init__
File "/usr/lib/python2.6/ConfigParser.py", line 311, in get
raise NoSectionError(section)
NoSectionError: No section: 'FTP Section'
Извините, отредактировано. Забыл, что за секунду – Ms01
Вы можете напрямую создать объект 'Connection'? – Magnus