Pregunta Obtener el nombre de archivo y la extensión en Ruby


Estoy trabajando en un programa para descargar un video de YouTube, convertirlo a MP3 y crear una estructura de directorio para los archivos.

Mi código es:

FileUtils.cd("#{$musicdir}/#{$folder}") do
  YoutubeDlhelperLibs::Downloader.get($url)
  if File.exists?('*.mp4')
    puts 'Remove unneeded tempfile'
    Dir['*.mp4'].each do |waste|
      File.delete(waste)
    end
  else
    puts 'Temporary file already deleted'
  end

  Dir['*.m4a'].each do |rip|
    rip.to_s
    rip.split
    puts 'Inside the function'
    puts rip
  end

end

El primero va a la carpeta de música ya creada. Dentro de eso estoy ejecutando get. Después de eso, tengo dos archivos en el directorio: "xyz.mp4" y "xyz.m4a".

Me gustaría buscar el nombre de archivo sin la extensión para poder manejar ambos archivos de manera diferente.

Estoy usando una matriz, pero una matriz para un solo partido me parece una locura.

¿Alguien más tiene otra idea?


75
2017-12-27 00:41


origen


Respuestas:


Puede usar las siguientes funciones para su propósito:

path = "/path/to/xyz.mp4"

File.basename(path)         # => "xyz.mp4"
File.extname(path)          # => ".mp4"
File.basename(path, ".mp4") # => "xyz"
File.basename(path, ".*")   # => "xyz"
File.dirname(path)          # => "/path/to"

182
2017-12-27 00:52