【问题标题】:ruby / OS X cannot open existing file in iPhoto Libraryruby / OS X 无法打开 iPhoto 库中的现有文件
【发布时间】:2015-03-20 21:45:02
【问题描述】:

环境:OSX 10.10 / iPhoto 9.6 / Ruby 2.2

在 ruby​​ 脚本中,我试图从“iPhoto 库”打开一个 xml 文件以获取专辑列表。但我收到了一个错误:

 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”内容中...

【问题讨论】:

    标签: ruby osx-yosemite iphoto


    【解决方案1】:

    您不应该使用URI.escape - 那是用于url,但您传递给File.open 的是本地文件系统上的路径,而不是url。特别是百分比转义(“%20”)对您的文件系统没有意义

    【讨论】:

    • 好的,你是对的......但是我发现了我的错误......我应该使用 Pathname.new : library_path = Pathname.new(ENV["HOME"]) + "Pictures" + " iPhoto Library.photolibrary" ,那么路径就是正确的...
    【解决方案2】:

    我应该使用

    library_path = Pathname.new(ENV["HOME"]) + "图片" + "iPhoto Library.photolibrary" xml_path = library_path + "AlbumData.xml" f = File.open(xml_path)

    正确处理路径名吧....

    【讨论】:

      猜你喜欢
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 2015-03-08
      • 1970-01-01
      • 2018-11-30
      • 2011-08-16
      • 1970-01-01
      相关资源
      最近更新 更多