ব্যাচ ফাইলের নামের আগে এবং পরে একটি স্ট্রিং বা অনুক্রমিক সংখ্যা যোগ করে পাইথনে একটি ফাইলের নাম পরিবর্তন করে

ব্যবসায়

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)
ফাইল বা ডিরেক্টরির নাম পরিবর্তন করে 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] "}"

সহজ ভাষায়, প্রতিস্থাপন ক্ষেত্রটি field_name দিয়ে শুরু হয়, যার ফলে নির্দিষ্ট বস্তুর মান ফরম্যাট করা হয় এবং প্রতিস্থাপন ক্ষেত্রের পরিবর্তে আউটপুটে সন্নিবেশ করা হয়। ক্ষেত্র_নামের পরে, রূপান্তর ক্ষেত্রটি একটি বিস্ময় চিহ্ন দ্বারা অনুসরণ করা যেতে পারে ‘! ক্ষেত্র_নামের পরে, রূপান্তর ক্ষেত্রটি একটি বিস্ময় চিহ্ন দ্বারা অনুসরণ করা যেতে পারে ‘! ফরম্যাট_স্পেক শেষে একটি কোলন ‘:’ দিয়ে লেখা যেতে পারে। এটি প্রতিস্থাপন করা মানটির অ-ডিফল্ট বিন্যাস নির্দিষ্ট করে।
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

আপনি যদি অনুক্রমিক সংখ্যা যোগ করতে চান, তাহলে ফর স্টেটমেন্টকে এইরকম কিছুতে পরিবর্তন করুন: 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

আপনি যদি 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