gpt4 book ai didi

python - 为什么我的代码会引发异常?

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:07 24 4
gpt4 key购买 nike

您好,我正在尝试创建一个 FTP 服务器并帮助我使用 pyftpdlib 进行开发。我想做的是在用户下载特定文件时执行一些文件操作,但有时它会引发异常,我真的不知道为什么。

完成本教程后,我在 pyftpdlib 中编写了自己的处理程序:http://code.google.com/p/pyftpdlib/wiki/Tutorial#3.8_-_Event_callbacks

但是当用户下载日志文件(我打算对其进行一些文件操作)时,有时会出现严重错误,我真的不明白为什么。我有另一个类,它基本上是从配置文件中读取的,错误消息说它找不到 FTP 部分。但这很奇怪,因为我的配置文件中显然有它,而且它有时工作得很好。

可能会因为我有两个“Connection”对象而出现此错误吗?这是我唯一的猜测,所以如果有人能解释出了什么问题,我会很高兴。这是我遇到问题的代码(没关系 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'

最佳答案

问题出在您未包含的部分中。它说

  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'

所以从第一行开始,我们知道 ftp.py 第 12 行的任何内容都是问题所在(因为下面的所有内容都不是我们的代码,所以我们假设它是正确的)。

第 12 行是这样的:

self.ip = config.get('FTP Section', 'hostname')

错误消息显示“没有部分:‘FTP 部分’”。

由此我们可以假设配置文件中存在错误(它没有“FTP 部分”)。

您指向的是正确的配置文件吗?它是否在您运行脚本的同一目录中?与脚本位于同一文件夹中将不起作用,它必须是您运行脚本的文件夹。

我认为这是您遇到的问题,因为根据 the documentation :

If none of the named files exist, the ConfigParser instance will contain an empty dataset.

您可以通过尝试打开文件来确认这一点。

关于python - 为什么我的代码会引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9626898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com