பைத்தானில் கோப்புப் பெயருக்கு முன்னும் பின்னும் ஒரு சரம் அல்லது வரிசை எண்ணைச் சேர்ப்பதன் மூலம் கோப்பின் பெயரை மாற்றவும்

வணிக

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 தொகுதியின் மறுபெயரிடுதல்() செயல்பாட்டைப் பயன்படுத்தவும், இது பெயர் குறிப்பிடுவது போல் மறுபெயரிடும்.

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

நீங்கள் வரிசை எண்களைச் சேர்க்க விரும்பினால், ஃபார் ஸ்டேட்மெண்ட்டை இப்படி ஏதாவது மாற்றவும்: எண்களை 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