- 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
පහත දැක්වෙන පරිදි, විශේෂිත දිගු පමණක් ලබා ගැනීමට ඔබට Wildcards (*) භාවිතා කළ හැක.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,*kwargs)
තන්තු හැඩතල ගැන්වීමේ මෙහෙයුම් සිදු කරයි. මෙම ක්රමය ඉල්ලා සිටින තන්තුවෙහි සාමාන්ය අක්ෂර හෝ {} මගින් වෙන් කරන ලද ආදේශන ක්ෂේත්ර අඩංගු විය හැක.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
ඔබට අනුක්රමික සංඛ්යා එකතු කිරීමට අවශ්ය නම්, for statement එක මෙවැනි දෙයකට වෙනස් කරන්න: 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 න් ආරම්භ කිරීමට අවශ්ය නම්, enumerate හි දෙවන තර්කය 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