2011-10-25 11 views
5

में नाम बदलें। मेरे पास संगीत की एक निर्देशिका है जिसमें एल्बम फ़ोल्डरों के साथ-साथ प्रत्येक स्तर पर व्यक्तिगत गीत भी हैं। मैं इन सभी फ़ाइलों को कैसे पार कर सकता हूं जो विभिन्न प्रारूपों (एमपी 3, वाव इत्यादि) में एन्कोड किए गए हैं? इसके अलावा क्या कोई तरीका है कि मैं उन प्रारूपों का नाम बदल सकता हूं जो नियमित अभिव्यक्तियों का उपयोग करके मेरी पसंद के अनुरूप हैं?फ़ाइलों के माध्यम से लूप कैसे करें और उन्हें Python

धन्यवाद

+0

मैं आमतौर पर ऐसा कुछ कोड करने के लिए पैसे लेता हूं। यहां कुछ ऐसा ही है जो मैंने पर्ले में लिखा था, आप कम से कम किसी न किसी विचार को देख सकते हैं: https://github.com/eberle1080/oggsync –

+0

@Chris: ouch, पर्ल की 300 लाइनें ट्रैवर्स और फ़ाइलों का नाम बदलने के लिए? –

+0

नहीं, एक प्रारूप से दूसरे प्रारूप में ट्रांसकोड करने के लिए 300 लाइनें। क्या यह ओपी के बाद नहीं था? –

उत्तर

7
  • os.walk
  • os.rename निर्देशिका और इसके उप-निर्देशिकाओं की फ़ाइलें पर जाने के लिए, रिकर्सिवली उन्हें

फ़ाइलों की एन्कोडिंग यहाँ कोई भूमिका का भुगतान करती है नाम बदलने के लिए, मैं सोच। आप, निश्चित रूप से, अपने एक्सटेंशन का पता लगा सकते हैं (उस के लिए os.path.splitext का उपयोग करें) और इसके आधार पर कुछ करें, लेकिन जब तक आपको फ़ाइलों का नाम बदलने की आवश्यकता है (यानी उनके नामों का उपयोग करें), सामग्री शायद ही मायने रखती है।

1

मैं अपने द्वारा लिखे गए प्रोग्राम में कोड के इस टुकड़े का उपयोग करता हूं। मैं छवि फ़ाइलों की एक पुनरावर्ती सूची प्राप्त करने के लिए इसका उपयोग करता हूं, कॉल पैटर्न re.compile(r'\.(bmp|jpg|png)$', re.IGNORECASE) जैसा कुछ है। मुझे लगता है कि आपको विचार समझ आ गया है।

def getFiles(dirname, suffixPattern=None): 
     dirname=os.path.normpath(dirname) 

     retDirs, retFiles=[], [] 
     for root, dirs, files in os.walk(dirname): 
       for i in dirs: 
         retDirs.append(os.path.join(root, i)) 
       for i in files: 
         if suffixPattern is None or \ 
          suffixPattern.search(i) is not None: 
           retFiles.append((root, i)) 

     return (retDirs, retFiles) 

आपके पास सूची होने के बाद, एक नामकरण नियम लागू करना आसान होगा। os.rename आपका मित्र है, http://docs.python.org/library/os.html देखें।

संबंधित मुद्दे