我是 Ruby 的新手,并且来自 Python 背景。为了帮助学习该语言,我正在移植一个现有的 Python 脚本,以便进行并排比较。到目前为止,我有一小段代码并且对为什么'nil'打印到控制台感到困惑。下面的代码:
#!/usr/bin/ruby
require 'date'
backup_dirs = ['/backups/db', '/backups/log']
backup_dirs.each do |backup_dir|
Dir.glob(backup_dir + '/' + '*.*.*.*.*.*').each do |filename|
begin
creation_date = DateTime.strptime(filename.split('.')[3], '%m%d%Y%H%M')
rescue
puts "Skipping #{filename}, invalid file."
end
end
puts 'File is okay.'
end
如果该DateTime.strptime
方法抛出异常,rescue
则运行并puts
打印出字符串。除了,在它出现之后nil
。我“用谷歌搜索”,发现puts
返回nil
. 但是为什么只显示在rescue
区域而不显示File is okay.
在行中。
即一个示例rescue
输出将是:
Skipping /backups/log/fs.server.dir.999999999999.14.log, invalid file.
nil
而且,如何让它停止向控制台显示?我确信这是一个基本的语言事物,对语言来说非常新,所以任何见解都会非常感激。
谢谢 - 汤姆