[英]error handling when doing a multiple get of files
我试图通过计时器任务运行一个脚本,该脚本每晚运行一次,以获取各种服务器上的所有文件(如果存在)。 只要服务器上有文件,它就可以正常工作。 那就是我的问题所在。
filenames = ftp.nlst() # get filenames within the directory
print filenames
for filename in filenames:
local_filename = os.path.join('C:\\test\\', filename)
file = open(local_filename, 'wb')
ftp.retrbinary('RETR '+ filename, file.write)
file.close()
ftp.quit()
当我在没有文件的服务器上运行脚本时,出现以下错误:
Traceback (most recent call last):
File "ftptest.py", line 85, in <module>
main()
File "ftptest.py", line 60, in main
filenames = ftp.nlst()
File "/usr/lib/python2.7/ftplib.py", line 506, in nlst
self.retrlines(cmd, files.append)
File "/usr/lib/python2.7/ftplib.py", line 429, in retrlines
conn = self.transfercmd(cmd)
File "/usr/lib/python2.7/ftplib.py", line 368, in transfercmd
return self.ntransfercmd(cmd, rest)[0]
File "/usr/lib/python2.7/ftplib.py", line 331, in ntransfercmd
resp = self.sendcmd(cmd)
File "/usr/lib/python2.7/ftplib.py", line 244, in sendcmd
return self.getresp()
File "/usr/lib/python2.7/ftplib.py", line 219, in getresp
raise error_perm, resp
ftplib.error_perm: 550 No files found
将会有几天没有文件。 我可以在脚本中添加些什么,而不是错误地今天可能会跳过或不打印任何文件..并继续前进。
如错误消息中所述,在代码的最开始这一行引发了异常:
filenames = ftp.nlst()
错误消息说明
raise error_perm, resp
ftplib.error_perm: 550 No files found
这给了我们有关引发异常的提示。 查看文档可提供有关此类异常的更多详细信息。
但是,我们可以使用try-except
-blocks来捕获任何异常,或者如果需要的话可以捕获特定的异常。
我无法在系统上测试这种方法,但是我建议如下所示:
try:
filenames = ftp.nlst()
except ftplib.error_perm:
pass
感谢您的所有帮助。 我可以使用以下命令使脚本正常工作。
try:
filenames = ftp.nlst()
except ftplib.error_perm:
print "No files at this time"
sys.exit(0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.