繁体   English   中英

多次获取文件时的错误处理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM