我有一个像这样的工作目录:
sascha@sascha-desktop:~/Musik/RMB/Youtube-Music$ ls -la
insgesamt 46456
drwxrwxr-x 2 sascha sascha 4096 Dez 9 10:32 .
drwxrwxr-x 3 sascha sascha 4096 Dez 6 22:47 ..
-rw-rw-r-- 1 sascha sascha 20751305 Apr 22 2015 RMB - Spring-dJl7zWZYj-E.mp4
-rw-rw-r-- 1 sascha sascha 6051641 Apr 22 2015 RMB - Spring.m4a
-rw-rw-r-- 1 sascha sascha 20751305 Apr 22 2015 RMB - Spring.mp4
在我的Ruby程序中,我有两种方法:
def self.rename(title)
filename = title.to_s
ext = file_exist_ogg_m4a(filename)
filenamenew0 = filename.gsub(/ /, '_')
pattern = /[a-zA-Z0-9\-\s\_]/
filenamenew = filenamenew0.split(//).keep_if do |chr|
chr =~ pattern
end.join
puts 'Renaming the downloaded file'
puts "Filename: #{filename}" # debug
puts "Filenamenew: #{filenamenew}" # debug
puts "Extension: #{ext}" # debug
puts Dir.pwd # debug
#FileUtils.mv("#{filename}.#{ext}", "#{filenamenew}.#{ext}")
#[filenamenew, filename]
end
def self.file_exist_ogg_m4a(filename)
puts 'Accessing file_exist_ogg_m4a'
puts Dir.pwd # debug
if File.exist?("#{filename}.ogg")
ext = 'ogg'
elsif File.exist?("#{filename}.m4a")
ext = 'm4a'
elsif File.exist?("#{filename}.webm")
ext = 'webm'
end
puts ext # debug
puts 'Closing file_exist_ogg_m4a'
return ext # debug
end
我通过file_exist_ogg_m4a方法获得扩展名。
通过运行程序,它给了我:
Accessing file_exist_ogg_m4a
/home/sascha/Musik/RMB/Youtube-Music
Closing file_exist_ogg_m4a
Renaming the downloaded file
Filename: RMB - Spring
Filenamenew: RMB_-_Spring
Extension:
/home/sascha/Musik/RMB/Youtube-Music
所以看起来我在正确的目录中,应该找到#{filename} .m4a,并且ext变量应该包含“m4a”。 但是,如果我正在寻找正在运行的方法“重命名”,那么我看起来就像一个空的#{ext}。
如果我正在使用该代码,则会找到一个m4a文件:
dir = Dir.pwd
if !Dir.glob("#{dir}/*.ogg").empty?
ext = 'ogg'
elsif !Dir.glob("#{dir}/*.m4a").empty?
ext = 'm4a'
elsif !Dir.glob("#{dir}/*.webm").empty?
ext = 'webm'
end
所以我认为它与字符串“filename”有关。 也许有人有想法?
答案 0 :(得分:0)
File.exist?
与当前脚本目录相关,而不是与Dir
的内部相关。有人可能会使用:
File.exist?(File.join Dir.pwd, "#{filename}.ogg")
以实现所请求的功能。