Python错误捕获与FTP

11 投票
3 回答
27099 浏览
提问于 2025-04-16 00:45

我正在尝试了解Python中的FTP库。 :)

到目前为止,我已经搞明白了这些。

from ftplib import FTP

server = '127.0.0.1'
port = '57422'

print 'FTP Client (' + server + ') port: ' + port

try:
    ftp = FTP()
    ftp.connect(server, port, 3)
    print 'Connected! Welcome msg is \"' + ftp.getwelcome() + '\"'

    ftp.cwd('\\')

    x = '1'
    currentDir = ''

except: //***What do I put here?***

http://docs.python.org/library/ftplib.html上说有几个错误代码可以捕捉,但我不知道怎么做

比如:except: ftplib.all_errors

第二个问题。 :P 我怎么才能获取更具体的错误信息呢?也许是错误代码?

我刚接触Python(大约一个小时)。

3 个回答

1

除非真的必要,否则你不应该去捕捉一个异常类。异常是一个通用的捕捉工具,最好是捕捉具体的错误类型,比如 socket.error。

  import ftplib
  import socket <--

  server = '127.0.0.1'
  port = '57422'

  print 'FTP Client (' + server + ') port: ' + port

  ftp = ftplib.FTP()
  try:
    ftp.connect(server, port, 3)
    print 'Connected! Welcome msg is \"' + ftp.getwelcome() + '\"'

    ftp.cwd('\\')

    x = '1'
    currentDir = ''
  except socket.error,e: <--
    print 'unable to connect!,%s'%e
24

我做不到

except: ftplib.all_errors

当然不行,那样写是错误的语法!不过你可以用正确的语法来实现:

except ftplib.all_errors:

也就是说,异常的元组后面要加上冒号。

我怎么才能获取更具体的错误信息呢?比如错误代码?

except ftplib.all_errors as e:
  errorcode_string = str(e).split(None, 1)[0]

比如,当完整的错误信息是 '530 登录认证失败' 时,errorcode_string 的值将是 '530'

你可以在 文档 中找到其他的异常信息。

2

你写了

except Exception, e:  #you can specify type of Exception also
   print str(e)

撰写回答