windows
マシンの特定の拡張子のファイルのリストを取得するためにディレクトリ名のユーザ入力を使用する次のコードでは問題がありますruby - ディレクトリから特定の拡張子のファイルを取得する(windows)
puts "Enter the name of directory where files exist : "
directory = gets.chomp
csv_files = Dir.glob("#{directory}/*.csv")
ディレクトリ入力に関係なく(ディレクトリには.csvファイルがあります)、最後の行は空の配列を返します。
ルビーバージョン - ruby 2.0.0p598 (2014-11-13) [i386-mingw32]
コメント
PS C:\test> irb
irb(main):001:0> directory = gets.chomp
C:\test
=> "C:\\test"
irb(main):002:0> directory
=> "C:\\test"
irb(main):003:0> Dir.glob("#{directory}/*.csv")
=> []
irb(main):004:0> Dir.glob("#{directory}/*.*")
=> []
irb(main):005:0> Dir.glob("C:/" + directory + "/*.csv")
=> []
irb(main):006:0> Dir.glob("C:/test/*")
=> ["C:/test/test_csv.csv"]
irb(main):007:0> Dir.entries(directory)
=> [".", "..","test_csv.csv"]
irb(main):010:0> Dir.glob('./*.csv')
=> ["./test_csv.csv"]
irb(main):011:0>
入力ディレクトリの様子は? globパターンをDir.glob( "#{directory} /*.*")に変更すると、別のものが返されますか? – rpepato
入力ディレクトリは 'C:\ test'のように見え、' .csv'拡張子のファイルがいくつかあります。パターンを 'Dir.glob("#{directory} /*.* ")'に変更すると空の配列が返されます。 – user3206440
'Dir.glob(" C:/ "+ directory +"/*。csv ")は動作しますか? – Kelseydh