执行多个文件时的错误处理

时间:2016-02-17 17:56:38

标签: python python-2.7

我正在尝试通过计时器任务运行一个脚本,该脚本每晚运行以获取各种服务器以获取所有文件(如果存在)。只要服务器上有文件,它就可以正常工作。这就是我的问题所在。

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

有几天没有文件。我可以添加到脚本中,而不是错误地将其删除或者今天不打印任何文件..继续前进。

2 个答案:

答案 0 :(得分:0)

正如您在错误消息中所述,在代码的最开头,此行中引发了异常:

filenames = ftp.nlst()

错误消息告诉

raise error_perm, resp
ftplib.error_perm: 550 No files found

它给了我们关于引发异常的提示。查看docs可提供有关此类异常的更多详细信息。

但是,如果我们愿意,我们可以使用try-except - 块来捕获任何异常或特定的异常。

我无法在我的系统上测试这种方法,但我建议如下:

try:
    filenames = ftp.nlst()
except ftplib.error_perm:
    pass

答案 1 :(得分:0)

感谢您的帮助。我能够使用以下内容使脚本工作。

try:  
    filenames = ftp.nlst()  
except ftplib.error_perm:  
    print "No files at this time"  
    sys.exit(0)