我正在尝试通过计时器任务运行一个脚本,该脚本每晚运行以获取各种服务器以获取所有文件(如果存在)。只要服务器上有文件,它就可以正常工作。这就是我的问题所在。
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
有几天没有文件。我可以添加到脚本中,而不是错误地将其删除或者今天不打印任何文件..继续前进。
答案 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)