我有一个文件,其名称类似于:/path/to/file/dir with spaces/mytiff-?.tif
. 在 irb 我尝试以下两种方法:
open("/path/to/file/dir with spaces/mytiff-?.tif", 'rb')
File.open("/path/to/file/dir with spaces/mytiff-?.tif", 'rb')
我收到一个错误:
Errno::ENOENT: No such file or directory.
我也尝试过替换字符串中的?
with \?
。
我正在使用红宝石 2.0.0。文件是网络驱动器 (CIFS),客户端是 mac (lion)。
更新
谢谢您的帮助。问题仍然没有解决。
$ ls "/Volumes/rmrpp/MLP Library/Bridgland 1927 - North Saskatchewan/Stations/420/Repeat Masters/"
HIG2008_B27_420-100.tif HIG2008_B27_420-90.tif HIG2008_B27_420-92.tif HIG2008_B27_420-94.tif HIG2008_B27_420-96.tif HIG2008_B27_420-98.tif HIG2008_B27_420-?.tif
HIG2008_B27_420-101.tif HIG2008_B27_420-91.tif HIG2008_B27_420-93.tif HIG2008_B27_420-95.tif HIG2008_B27_420-97.tif HIG2008_B27_420-99.tif
$ irb
1.9.3p194 :001 > t = File.open("/Volumes/rmrpp/MLP Library/Bridgland 1927 - North Saskatchewan/Stations/420/Repeat Masters/HIG2008_B27_420-?.tif",'rb'); nil
Errno::ENOENT: No such file or directory - /Volumes/rmrpp/MLP Library/Bridgland 1927 - North Saskatchewan/Stations/420/Repeat Masters/HIG2008_B27_420-?.tif
from (irb):1:in `initialize'
from (irb):1:in `open'
from (irb):1
from /Users/mlp/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>'
1.9.3p194 :002 > t = File.open("/Volumes/rmrpp/MLP Library/Bridgland 1927 - North Saskatchewan/Stations/420/Repeat Masters/HIG2008_B27_420-98.tif",'rb'); nil
=> nil
1.9.3p194 :003 > t.size
=> 50124180
如您所见,该文件存在(我在 bash 中列出它)。我进入 irb 并尝试将文件作为二进制文件读取。文件路径被引用。它失败。我尝试了同一目录中的另一个文件,它可以工作。
我认为@mu_is_too_short 是正确的。也许?根本不是问号。我能想到的唯一可行的解决方案是手动重命名带有神秘问号的文件。还有其他想法吗?