【问题标题】:Get file name and extension in Ruby在 Ruby 中获取文件名和扩展名
【发布时间】:2013-12-27 00:41:12
【问题描述】:

我正在开发一个从 YouTube 下载视频、将其转换为 MP3 并为文件创建目录结构的程序。

我的代码是:

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

第一个进入已创建的音乐文件夹。在里面我正在执行get。之后我在目录中有两个文件:“xyz.mp4”和“xyz.m4a”。

我想获取不带扩展名的文件名,以便可以不同方式处理这两个文件。

我正在使用一个数组,但是一个匹配的数组对我来说听起来很疯狂。

还有其他想法吗?

【问题讨论】:

  • 不要像你一样使用$globals。它们是一个非常强烈的暗示,您不了解变量作用域并且依赖全局变量来“作弊”。它们带有代码气味,会导致痛苦和痛苦。
  • rip.to_srip.split 什么也不做。

标签: ruby file


【解决方案1】:

您可以根据自己的目的使用以下功能:

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"

【讨论】:

  • 注意extn是字符串".mp4"or even the string ".*"
  • 谢谢。在这种情况下的问题是,我不知道那个地方的文件名。我只知道存在两个文件。一个 .mp4 和一个 .m4a。我怎样才能得到那个文件名?
  • @saigkill 使用通配符“.*”,正如 Phrogz 所说,如果您不知道/关心扩展名是什么。
  • 到目前为止,我至少有 60 次想亲吻写这篇文章的人
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 2019-05-21
  • 2012-06-07
  • 2016-09-01
  • 1970-01-01
相关资源
最近更新 更多