web-dev-qa-db-fra.com

Obtenir le nom du fichier et son extension dans Ruby

Je travaille sur un programme permettant de télécharger une vidéo à partir de YouTube, de la convertir au format MP3 et de créer une structure de répertoires pour les fichiers.

Mon code est:

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

Le premier va dans le dossier de musique déjà créé. A l'intérieur de cela, j'exécute get. Après cela, j'ai deux fichiers dans le répertoire: "xyz.mp4" et "xyz.m4a".

Je voudrais récupérer le nom de fichier sans l'extension afin que je puisse gérer les deux fichiers différemment.

J'utilise un tableau, mais un tableau pour un seul match me semble fou.

Quelqu'un a une autre idée?

101
Sascha Manns

Vous pouvez utiliser les fonctions suivantes pour vos besoins:

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"
250
Stoic