ruby / OS X не может открыть существующий файл в iPhoto Library

env: OSX 10.10 / iPhoto 9.6 / Ruby 2.2

в сценарии ruby ​​я пытаюсь открыть XML-файл из "iPhoto Library", чтобы получить список альбомов... но я получил ошибку:

 f = File.open(@xmlpath)
 Errno::ENOENT: No such file or directory @ rb_sysopen - /Users/myself/Pictures/iPhoto%20Library/AlbumData.xml

Сначала я определил путь к "iPhoto Library" в своем пути пользователя:

PhotoLib = File.expand_path(File.join("~","Pictures","iPhoto Library")

затем я определил путь к файлу @xml (избегая встроенных пробелов)

 @xmlpath = URI.escape(File.join iPhotoLib, "AlbumData.xml")

наконец я пытаюсь открыть файл XML

 f = File.open(@xmlpath)

но возникает ошибка "Нет такого файла или каталога"... где я ошибаюсь? файл существует в контенте "iPhoto Library"...

2 ответа

Вы не должны использовать URI.escape - это для URL, но то, что вы передаете File.open путь в вашей локальной файловой системе, а не URL. В частности, процентное экранирование ("%20") не имеет смысла для вашей файловой системы.

Я должен использовать

library_path = Pathname.new(ENV["HOME"]) + "Изображения" + "iPhoto Library.photolibrary" xml_path = library_path + "AlbumData.xml" f = File.open(xml_path)

Путь обрабатывать правильно это....

Другие вопросы по тегам