ब्याचले फाइल नाम अघि र पछि स्ट्रिङ वा क्रमिक संख्या थपेर पाइथनमा फाइल नाम परिवर्तन गर्नुहोस्।

व्यापार

ओएस मोड्युल र ग्लोब मोड्युल प्रयोग गरेर थोकमा पुन: नामाकरण गर्नुहोस्।

फाइल नामहरू अघि र पछि स्ट्रिङ वा क्रमिक संख्याहरू थपेर बल्कमा फोल्डरमा फाइल नामहरू परिवर्तन गर्न र पुन: नामाकरण गर्न ओएस मोड्युल र ग्लोब मोड्युल प्रयोग गर्नुहोस्।

उदाहरण फाइल संरचना

उदाहरणको रूपमा निम्न फाइल संरचना लिनुहोस्। यस अवस्थामा, यो मानिन्छ कि त्यहाँ फोल्डरमा केवल फाइलहरू (कुनै फोल्डरहरू) छैनन्।

.
└── 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)
फाइल वा डाइरेक्टरी src लाई 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] "}"

सरल सर्तहरूमा, प्रतिस्थापन क्षेत्र field_name बाट सुरु हुन्छ, जसले निर्दिष्ट वस्तुको मानलाई ढाँचा बनाउँछ र प्रतिस्थापन क्षेत्रको सट्टा आउटपुटमा सम्मिलित गर्दछ। क्षेत्र_नाम पछि, रूपान्तरण क्षेत्रलाई विस्मयादिबोधक चिन्ह ‘द्वारा पछ्याउन सकिन्छ! क्षेत्र_नाम पछि, रूपान्तरण क्षेत्रलाई विस्मयादिबोधक चिन्ह ‘द्वारा पछ्याउन सकिन्छ! format_spec अन्त्यमा कोलोन ‘:’ सँग लेख्न सकिन्छ। यसले प्रतिस्थापन गर्नुपर्ने मानको पूर्वनिर्धारित ढाँचा निर्दिष्ट गर्दछ।
string — Common string operations — Python 3.10.0 Documentation

यदि तपाइँ यसलाई अहिलेको लागि ० भर्न चाहनुहुन्छ भने, निम्न गर्नुहोस्।

# 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

यदि तपाइँ अनुक्रमिक संख्याहरू थप्न चाहनुहुन्छ भने, 0 बाट क्रमबद्ध संख्याहरू प्राप्त गर्नको लागि कथनको लागि परिवर्तन गर्नुहोस्: enumerate()। यस अवस्थामा, संख्या तीन अंकले भरिएको छ।

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

यदि तपाइँ ० को सट्टा १ बाट सुरु गर्न चाहनुहुन्छ भने, गणनाको दोस्रो तर्कलाई १ मा सेट गर्नुहोस्।

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.splitext() फाइललाई एक्स्टेन्सन र रूट पथमा विभाजन गर्न प्रयोग गर्नुहोस्, र त्यसपछि रूट पथमा स्ट्रिङ वा क्रमिक संख्याहरू थप्नुहोस्। निम्न उदाहरणमा, _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
Copied title and URL