బ్యాచ్ ఫైల్ పేరుకు ముందు మరియు తరువాత స్ట్రింగ్ లేదా సీక్వెన్షియల్ నంబర్‌ను జోడించడం ద్వారా పైథాన్‌లో ఫైల్ పేరును మార్చుతుంది

వ్యాపారం

os మాడ్యూల్ మరియు గ్లోబ్ మాడ్యూల్ ఉపయోగించి పెద్దమొత్తంలో పేరు మార్చండి.

ఫైల్ పేర్లకు ముందు మరియు తర్వాత స్ట్రింగ్‌లు లేదా సీక్వెన్షియల్ నంబర్‌లను జోడించడం ద్వారా ఫోల్డర్‌లోని ఫైల్ పేర్లను పెద్దమొత్తంలో మార్చడానికి మరియు పేరు మార్చడానికి os మాడ్యూల్ మరియు గ్లోబ్ మాడ్యూల్‌ని ఉపయోగించండి.

ఉదాహరణ ఫైల్ నిర్మాణం

కింది ఫైల్ నిర్మాణాన్ని ఉదాహరణగా తీసుకోండి. ఈ సందర్భంలో, ఫోల్డర్‌లో ఫైల్‌లు (ఫోల్డర్‌లు లేవు) మాత్రమే ఉన్నాయని భావించబడుతుంది.

.
└── testdir
    ├── a.jpg
    ├── b.jpg
    ├── c.jpg
    ├── d.jpg
    └── e.jpg

గుర్తుంచుకోవలసిన విషయాలు

ప్రక్రియలో ఫైల్ పేరు మార్చడం జరుగుతుంది కాబట్టి, అసలైన ఫైల్‌ను విడిగా సేవ్ చేయండి, తద్వారా వైఫల్యం సంభవించినప్పుడు అది సేవ్ చేయబడుతుంది.

గ్లోబ్ మాడ్యూల్‌తో ఫైల్ జాబితాను పొందండి

గ్లోబ్ మాడ్యూల్ Unix షెల్ ఉపయోగించే నియమాల ప్రకారం పేర్కొన్న నమూనాకు సరిపోలే అన్ని పాత్‌నేమ్‌లను కనుగొంటుంది.
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 మాడ్యూల్ యొక్క ఫంక్షన్ పేరుమార్పు()ని ఉపయోగించండి, ఇది పేరు సూచించినట్లుగా పేరు మారుస్తుంది.

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] "}"

సరళంగా చెప్పాలంటే, రీప్లేస్‌మెంట్ ఫీల్డ్ ఫీల్డ్_నేమ్‌తో ప్రారంభమవుతుంది, దీని వలన పేర్కొన్న ఆబ్జెక్ట్ యొక్క విలువ ఫార్మాట్ చేయబడి రీప్లేస్‌మెంట్ ఫీల్డ్‌కు బదులుగా అవుట్‌పుట్‌లోకి చొప్పించబడుతుంది. ఫీల్డ్_పేరు తర్వాత, మార్పిడి ఫీల్డ్‌ను ఆశ్చర్యార్థకం గుర్తుతో అనుసరించవచ్చు! ఫీల్డ్_పేరు తర్వాత, మార్పిడి ఫీల్డ్‌ను ఆశ్చర్యార్థకం గుర్తుతో అనుసరించవచ్చు! ఫార్మాట్_స్పెక్‌ని చివర ‘:’ అనే కోలన్‌తో వ్రాయవచ్చు. ఇది భర్తీ చేయవలసిన విలువ యొక్క నాన్-డిఫాల్ట్ ఆకృతిని నిర్దేశిస్తుంది.
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 నుండి క్రమంలో లెక్కించబడే సంఖ్యలను పొందడానికి ఎన్యూమరేట్(). ఈ సందర్భంలో, సంఖ్య మూడు అంకెలతో నిండి ఉంటుంది.

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