- ओएस मॉड्यूल और ग्लोब मॉड्यूल का उपयोग करके थोक में नाम बदलें।
- ग्लोब मॉड्यूल के साथ फ़ाइल सूची प्राप्त करें
- os.rename के साथ नाम बदलें ()
- str.format () के साथ शून्य-भरे अनुक्रमिक संख्याएं उत्पन्न करना
- फ़ाइल से पहले एक स्ट्रिंग/अनुक्रमिक संख्या जोड़ने के लिए कोड का उदाहरण
- फ़ाइल के बाद स्ट्रिंग/अनुक्रमिक संख्या जोड़ने के लिए कोड का उदाहरण
ओएस मॉड्यूल और ग्लोब मॉड्यूल का उपयोग करके थोक में नाम बदलें।
फ़ाइल नामों से पहले और बाद में स्ट्रिंग्स या अनुक्रमिक संख्याओं को जोड़कर थोक में फ़ोल्डर में फ़ाइल नामों को बदलने और नाम बदलने के लिए ओएस मॉड्यूल और ग्लोब मॉड्यूल का उपयोग करें।
उदाहरण फ़ाइल संरचना
एक उदाहरण के रूप में निम्न फ़ाइल संरचना लें। इस मामले में, यह माना जाता है कि फ़ोल्डर में केवल फ़ाइलें (कोई फ़ोल्डर नहीं) हैं।
. └── testdir ├── a.jpg ├── b.jpg ├── c.jpg ├── d.jpg └── e.jpg
ध्यान रखने योग्य बातें
चूंकि इस प्रक्रिया में फ़ाइल का नाम बदलना शामिल है, मूल फ़ाइल को अलग से सहेजें ताकि विफलता के मामले में इसे सहेजा जा सके।
ग्लोब मॉड्यूल के साथ फ़ाइल सूची प्राप्त करें
ग्लोब मॉड्यूल यूनिक्स शेल द्वारा उपयोग किए गए नियमों के अनुसार निर्दिष्ट पैटर्न से मेल खाने वाले सभी पथनामों को ढूंढेगा।
glob — Unix style pathname pattern expansion — Python 3.10.0 Documentation
उदाहरण के लिए, वर्तमान निर्देशिका में फ़ाइल और निर्देशिका नामों की सूची प्राप्त करने के लिए निम्न फ़ंक्शन का उपयोग किया जा सकता है।glob.glob('./*')
तर्क एक निरपेक्ष पथ या एक सापेक्ष पथ हो सकता है।
इस उदाहरण में, यह निम्न की तरह दिखेगा।
import glob print(glob.glob('./testdir/*')) # => ['./testdir/a.jpg', './testdir/b.jpg', './testdir/c.jpg', './testdir/d.jpg', './testdir/e.jpg']
A.jpg के बजाय, आप तर्क पथ के साथ निम्नलिखित प्राप्त कर सकते हैं।./testdir/a.jpg
जैसा कि नीचे दिखाया गया है, आप केवल विशिष्ट एक्सटेंशन प्राप्त करने के लिए वाइल्डकार्ड (*) का उपयोग कर सकते हैं।glob.glob('./testdir/*.jpg')
निम्नलिखित पैटर्न मिलान का उपयोग किया जा सकता है।
*
: सब कुछ मेल खाता है।?
किसी एक वर्ण से मेल खाता है।[abc]
: a, b, या c के एकल वर्ण से मेल खाता है।[!abc]
: a, b, या c . के अलावा किसी एकल वर्ण से मेल खाता है
os.rename के साथ नाम बदलें ()
os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
फ़ाइल या निर्देशिका स्रोत का नाम बदलकर dst कर दें।
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
ओएस मॉड्यूल के फ़ंक्शन का नाम बदलें () का उपयोग करें, जो नाम से पता चलता है कि इसका नाम बदल देगा।
import os os.rename('./testdir/a.jpg', './testdir/a_000.jpg')
फिर, a.jpg का नाम बदलकर a_000.jpg कर दिया जाएगा।
str.format () के साथ शून्य-भरे अनुक्रमिक संख्याएं उत्पन्न करना
उदाहरण के लिए, दर्जनों फाइलों में अनुक्रमिक संख्या जोड़ते समय, हम “0” या “1” के बजाय “00” या “11” का उपयोग करना चाहते हैं। यदि आप इस तरह से शून्य भरना चाहते हैं, तो str.format() विधि का उपयोग करें।
str.format(args,*क्वार्ग)
स्ट्रिंग स्वरूपण संचालन करता है। इस पद्धति को लागू करने वाली स्ट्रिंग में {} द्वारा अलग किए गए सामान्य वर्ण या प्रतिस्थापन फ़ील्ड हो सकते हैं।Built-in Types — Python 3.10.0 Documentation
प्रारूप विनिर्देश स्ट्रिंग्स का सिंटैक्स
फ़ॉर्मेटिंग स्ट्रिंग में कर्ली ब्रैकेट {} में संलग्न “रिप्लेसमेंट फ़ील्ड” होता है।प्रतिस्थापन क्षेत्र का सिंटैक्स इस प्रकार है:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
सरल शब्दों में, प्रतिस्थापन फ़ील्ड फ़ील्ड_नाम से शुरू होती है, जो निर्दिष्ट ऑब्जेक्ट के मान को स्वरूपित करने और प्रतिस्थापन फ़ील्ड के बजाय आउटपुट में डालने का कारण बनती है। फ़ील्ड_नाम के बाद, रूपांतरण फ़ील्ड के बाद विस्मयादिबोधक चिह्न ‘! फ़ील्ड_नाम के बाद, रूपांतरण फ़ील्ड के बाद विस्मयादिबोधक चिह्न ‘! format_spec को अंत में एक कोलन ‘:’ के साथ लिखा जा सकता है। यह प्रतिस्थापित किए जाने वाले मान के गैर-डिफ़ॉल्ट स्वरूप को निर्दिष्ट करता है।
string — Common string operations — Python 3.10.0 Documentation
यदि आप इसे अभी के लिए 0 से भरना चाहते हैं, तो निम्न कार्य करें।
# 3を2桁でゼロ埋め print('{0:02d}'.format(3)) # => 03 # Fill in the zeros with three and four digits for 4 and 6, respectively. print('{0:03d}, {1:04d}'.format(4, 6)) # => 004, 0006
फ़ाइल से पहले एक स्ट्रिंग/अनुक्रमिक संख्या जोड़ने के लिए कोड का उदाहरण
सबसे पहले, फ़ाइल का नाम os.path.basename() के साथ प्राप्त करें। फिर, फ़ाइल नाम के सामने एक स्ट्रिंग या अनुक्रमिक संख्या जोड़ें, और इसे os.path.join() के साथ मूल पथ से जोड़ दें।
निम्न उदाहरण सभी फ़ाइल नामों के सामने img_ जोड़ता है।
import os import glob path = "./testdir" files = glob.glob(path + '/*') for f in files: os.rename(f, os.path.join(path, 'img_' + os.path.basename(f)))
परिणाम इस प्रकार है।
. └── testdir ├── img_a.jpg ├── img_b.jpg ├── img_c.jpg ├── img_d.jpg └── img_e.jpg
यदि आप अनुक्रमिक संख्याएँ जोड़ना चाहते हैं, तो कथन के लिए कुछ इस तरह बदलें: enumerate() संख्याओं को 0 से क्रम में गिनने के लिए। इस स्थिति में, संख्या तीन अंकों से भरी होती है।
for i, f in enumerate(files): os.rename(f, os.path.join(path, '{0:03d}'.format(i) + '_' + os.path.basename(f)))
यहाँ परिणाम है।
. └── testdir ├── 000_a.jpg ├── 001_b.jpg ├── 002_c.jpg ├── 003_d.jpg └── 004_e.jpg
यदि आप 0 के बजाय 1 से शुरू करना चाहते हैं, तो गणना का दूसरा तर्क 1 पर सेट करें।
for i, f in enumerate(files, 1): os.rename(f, os.path.join(path, '{0:03d}'.format(i) + '_' + os.path.basename(f)))
यह इस प्रकार चलता है।
. └── testdir ├── 001_a.jpg ├── 002_b.jpg ├── 003_c.jpg ├── 004_d.jpg └── 005_e.jpg
फ़ाइल के बाद स्ट्रिंग/अनुक्रमिक संख्या जोड़ने के लिए कोड का उदाहरण
फ़ाइल को एक्सटेंशन और रूट पथ में विभाजित करने के लिए os.path.slitext() का उपयोग करें, और फिर रूट पथ में स्ट्रिंग या अनुक्रमिक संख्याएं जोड़ें। निम्नलिखित उदाहरण में, सभी फ़ाइल नामों के बाद _img जोड़ा जाता है।
import os import glob files = glob.glob('./testdir/*') for f in files: ftitle, fext = os.path.splitext(f) os.rename(f, ftitle + '_img' + fext)
नतीजा यह है।
. └── testdir ├── a_img.jpg ├── b_img.jpg ├── c_img.jpg ├── d_img.jpg └── e_img.jpg
फ़ाइल से पहले एक स्ट्रिंग/अनुक्रमिक संख्या जोड़ने के साथ, अनुक्रमिक संख्या जोड़ते समय कथन के लिए बदलें।
for i, f in enumerate(files): ftitle, fext = os.path.splitext(f) os.rename(f, ftitle + '_' + '{0:03d}'.format(i) + fext)
. └── testdir ├── a_000.jpg ├── b_001.jpg ├── c_002.jpg ├── d_003.jpg └── e_004.jpg