次のような名前のファイルがあります/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.
?
また、文字列内のをに置き換えてみました\?
。
Ruby 2.0.0 を使用しています。ファイルはネットワーク ドライブ (CIFS)、クライアントは Mac (ライオン) です。
アップデート
助けてくれてありがとう。問題はまだ解決されていません。
$ 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 が正しいと思います。たぶん?まったくクエスチョンマークではありません。私が考えることができる唯一の実行可能な解決策は、謎の疑問符でファイルの名前を手動で変更することです。他のアイデアはありますか?