ruby 中的循环不起作用,从 jpeg 中提取 exif 元数据

loop in ruby not working, pulling exif meta from jpeg

我似乎无法让这个循环工作。总菜鸟 ruby.

working_dir.each do |x|
        puts x

        puts EXIFR::JPEG.new('/home/alan/workspace/ruby/latlong/#{x}').gps.latitude 
end

我明白了

No such file or directory @ rb_sysopen - /home/alan/workspace/ruby/latlong/#{x} (Errno::ENOENT)

我正在对路径进行硬编码。请帮忙。我正在尝试从 jpeg 目录中提取 exif 元数据。

这样的事情怎么样:

folder_which_contains_jpegs = 'workspace/ruby/latlong'
folder_path = File.join(Dir.pwd, folder_which_contains_jpegs) # assume your current dir is `/home/alan`
unless File.directory?(folder_path)
  fail "Error: the directory #{folder_path} doesn't exist"
end

def jpeg_file_list(path, &block)
  Dir.glob(path + '/**/*.jpeg').each(&block)
end

jpeg_file_list do |image_path|
  puts image_path
  puts EXIFR::JPEG.new.image_path.gps.latitude
end

这样的东西行得通吗?

如评论中所述,由于单引号字符串中缺少字符串插值,您遇到了错误。尝试将单引号改为双引号:

working_dir.each do |x|
  puts EXIFR::JPEG.new("/home/alan/workspace/ruby/latlong/#{x}").gps.latitude
end

注:

  1. 虽然这是为了查明错误而发布的;按照 @CuriousMind 的回答,它可能有比你正在尝试做的更好的实现。