بیچ فائل کے نام سے پہلے اور بعد میں سٹرنگ یا ترتیب وار نمبر شامل کرکے ازگر میں فائل کا نام تبدیل کریں۔

کاروبار

os ماڈیول اور گلوب ماڈیول کا استعمال کرتے ہوئے بڑی تعداد میں نام تبدیل کریں۔

فائل کے ناموں سے پہلے اور بعد میں سٹرنگز یا ترتیب وار نمبرز شامل کر کے بڑے پیمانے پر فولڈر میں فائل کے ناموں کو تبدیل کرنے اور ان کا نام تبدیل کرنے کے لیے os ماڈیول اور گلوب ماڈیول کا استعمال کریں۔

فائل کی ساخت کی مثال

مثال کے طور پر درج ذیل فائل کی ساخت کو لیں۔ اس صورت میں، یہ فرض کیا جاتا ہے کہ فولڈر میں صرف فائلیں (کوئی فولڈر نہیں) ہیں۔

.
└── 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

OS ماڈیول کے فنکشن rename() کا استعمال کریں، جو اس کا نام بدل دے گا جیسا کہ نام تجویز کرتا ہے۔

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.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