Frage Ruft den Dateinamen und die Erweiterung in Ruby ab


Ich arbeite an einem Programm, um ein Video von YouTube herunterzuladen, es in MP3 zu konvertieren und eine Verzeichnisstruktur für die Dateien zu erstellen.

Mein Code ist:

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

Der erste geht in den bereits erstellten Musikordner. Darin führe ich aus get. Danach habe ich zwei Dateien im Verzeichnis: "xyz.mp4" und "xyz.m4a".

Ich möchte den Dateinamen ohne die Erweiterung holen, damit ich beide Dateien anders behandeln kann.

Ich benutze ein Array, aber ein Array für nur ein Spiel klingt verrückt nach mir.

Hat jemand eine andere Idee?


75
2017-12-27 00:41


Ursprung


Antworten:


Sie können die folgenden Funktionen für Ihren Zweck verwenden:

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