रूबी में फ़ाइल नाम और एक्सटेंशन प्राप्त करें


123

मैं YouTube से वीडियो डाउनलोड करने, इसे एमपी 3 में बदलने और फ़ाइलों के लिए एक निर्देशिका संरचना बनाने के लिए एक कार्यक्रम पर काम कर रहा हूं।

मेरा कोड है:

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"।

मैं विस्तार के बिना फाइल का नाम लेना चाहूंगा ताकि मैं दोनों फाइलों को अलग-अलग तरीके से संभाल सकूं।

मैं एक सरणी का उपयोग कर रहा हूं, लेकिन सिर्फ एक मैच के लिए एक सरणी मेरे लिए पागल लगती है।

किसी और के विचार है?


5
$globalsजैसे तुम हो वैसे उपयोग मत करो । वे एक बहुत ही मजबूत संकेत हैं जो आपको चर स्कूपिंग नहीं समझते हैं और ग्लोबल्स पर "धोखा" देने का भरोसा कर रहे हैं। वे कोड-गंध हैं और दुख और दर्द को जन्म देते हैं।
द टिन मैन

इसके अलावा rip.to_sऔर rip.splitकुछ भी नहीं।
द टीन मैन

जवाबों:


304

आप अपने उद्देश्य के लिए निम्नलिखित कार्यों का उपयोग कर सकते हैं:

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"

15
ध्यान दें कि extnस्ट्रिंग ".mp4" या यहां तक ​​कि स्ट्रिंग है".*"
फ्रॉग्ज

धन्यवाद। इस मामले में समस्या यह है, कि मैं उस जगह पर फ़ाइल नाम नहीं जानता। मुझे सिर्फ इतना पता है कि दो फाइलें मौजूद हैं। एक .mp4 और एक .m4a। मैं उस फ़ाइल नाम को कैसे प्राप्त कर सकता हूं?
साशा मैन्स

@saigkill उपयोग "। *", वाइल्डकार्ड, जैसा कि फ्रॉग्ज ने कहा है कि अगर आपको नहीं पता / परवाह है कि एक्सटेंशन क्या है।
ट्रैविस रीडर

1
कम से कम 60 बार नहीं है अब तक मैं जो व्यक्ति इस लिखा चुंबन करना चाहता था
bbozo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.