- os ماڈیول اور گلوب ماڈیول کا استعمال کرتے ہوئے بڑی تعداد میں نام تبدیل کریں۔
- گلوب ماڈیول کے ساتھ فائل کی فہرست حاصل کریں۔
- os.rename() سے نام تبدیل کریں
- str.format() کے ساتھ صفر سے بھرے ترتیب وار نمبر تیار کرنا
- فائل سے پہلے سٹرنگ/سکوینشل نمبر شامل کرنے کے لیے کوڈ کی مثال
- فائل کے بعد سٹرنگ/سکوینشل نمبر شامل کرنے کے لیے کوڈ کی مثال
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


