- Badilisha jina kwa wingi ukitumia moduli ya os na moduli ya globu.
- Pata orodha ya faili na moduli ya globu
- Badili jina ukitumia os.rename()
- Inazalisha nambari za mfuatano zilizojazwa sifuri na str.format()
- Mfano wa msimbo wa kuongeza mfuatano/nambari ya mfuatano kabla ya faili
- Mfano wa msimbo wa kuongeza mfuatano/mfuatano wa nambari baada ya faili
Badilisha jina kwa wingi ukitumia moduli ya os na moduli ya globu.
Tumia moduli ya os na moduli ya globu kubadilisha na kubadilisha jina la faili katika folda kwa wingi kwa kuongeza mifuatano au nambari za mfululizo kabla na baada ya majina ya faili.
Mfano wa muundo wa faili
Chukua muundo wa faili ufuatao kama mfano. Katika kesi hii, inachukuliwa kuwa kuna faili tu (hakuna folda) kwenye folda.
. └── testdir ├── a.jpg ├── b.jpg ├── c.jpg ├── d.jpg └── e.jpg
Mambo ya kuzingatia
Kwa kuwa mchakato unahusisha kubadilisha jina la faili, hifadhi faili asili kando ili iweze kuokolewa ikiwa itashindwa.
Pata orodha ya faili na moduli ya globu
Moduli ya globu itapata njia zote zinazolingana na muundo maalum kulingana na sheria zinazotumiwa na ganda la Unix.
glob — Unix style pathname pattern expansion — Python 3.10.0 Documentation
Kwa mfano, kazi ifuatayo inaweza kutumika kupata orodha ya faili na majina ya saraka katika saraka ya sasa.glob.glob('./*')
Hoja inaweza kuwa njia kamili au njia ya jamaa.
Katika mfano huu, itaonekana kama ifuatavyo.
import glob print(glob.glob('./testdir/*')) # => ['./testdir/a.jpg', './testdir/b.jpg', './testdir/c.jpg', './testdir/d.jpg', './testdir/e.jpg']
Badala ya a.jpg, unaweza kupata yafuatayo, huku njia ya hoja ikiongezwa../testdir/a.jpg
Unaweza pia kutumia kadi-mwitu (*) kupata viendelezi maalum tu, kama inavyoonyeshwa hapa chini.glob.glob('./testdir/*.jpg')
Ulinganishaji wa muundo ufuatao unaweza kutumika.
*
: Inalingana na kila kitu.?
Inalingana na mhusika yeyote.[abc]
: Inalingana na herufi moja kutoka kwa a, b, au c.[!abc]
: Inalingana na herufi moja isipokuwa a, b, au c
Badili jina ukitumia os.rename()
os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Badilisha jina la faili au saraka src hadi dst.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
Tumia jina la kukokotoa rename() la moduli ya os, ambayo itaipa jina jipya kama jina linavyopendekeza.
import os os.rename('./testdir/a.jpg', './testdir/a_000.jpg')
Kisha, a.jpg itabadilishwa jina kuwa a_000.jpg.
Inazalisha nambari za mfuatano zilizojazwa sifuri na str.format()
Kwa mfano, tunapoongeza nambari za mfuatano kwenye faili nyingi, tunataka kutumia “00” au “11” badala ya “0” au “1”. Ikiwa unataka kujaza zero kwa njia hii, tumia njia ya str.format().
str.format(args,*kwargs)
Hufanya shughuli za uumbizaji wa mfuatano. Mfuatano unaoomba mbinu hii unaweza kuwa na vibambo vya kawaida au sehemu mbadala zilizotenganishwa na {}.Built-in Types — Python 3.10.0 Documentation
Sintaksia ya mifuatano ya kubainisha umbizo
Mfuatano wa uumbizaji una “uga wa uingizwaji” uliofungwa katika mabano yaliyojipinda {}.Syntax ya uga uingizwaji ni kama ifuatavyo:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
Kwa maneno rahisi, sehemu ya uingizwaji huanza na field_name, ambayo husababisha thamani ya kitu kilichoainishwa kufomatiwa na kuingizwa kwenye pato badala ya uga uingizwaji. Baada ya field_name, uga wa ubadilishaji unaweza kufuatiwa na alama ya mshangao ‘! Baada ya field_name, uga wa ubadilishaji unaweza kufuatiwa na alama ya mshangao ‘! Fomati_spec inaweza kuandikwa kwa koloni ‘:’ mwishoni. Hii inabainisha umbizo lisilo chaguomsingi la thamani itakayobadilishwa.
string — Common string operations — Python 3.10.0 Documentation
Ikiwa unataka kuijaza na 0 kwa sasa, fanya yafuatayo.
# 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
Mfano wa msimbo wa kuongeza mfuatano/nambari ya mfuatano kabla ya faili
Kwanza, pata jina la faili na os.path.basename(). Kisha, ongeza kamba au nambari ya mfuatano mbele ya jina la faili, na uiambatanishe na njia ya asili kwa os.path.join().
Mfano ufuatao unaongeza img_ mbele ya majina yote ya faili.
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)))
Matokeo yake ni kama ifuatavyo.
. └── testdir ├── img_a.jpg ├── img_b.jpg ├── img_c.jpg ├── img_d.jpg └── img_e.jpg
Ikiwa unataka kuongeza nambari zinazofuatana, badilisha kwa taarifa kwa kitu kama hiki: enumerate() ili nambari zihesabiwe kwa mpangilio kutoka 0. Katika kesi hii, nambari imejaa tarakimu tatu.
for i, f in enumerate(files): os.rename(f, os.path.join(path, '{0:03d}'.format(i) + '_' + os.path.basename(f)))
Haya hapa matokeo.
. └── testdir ├── 000_a.jpg ├── 001_b.jpg ├── 002_c.jpg ├── 003_d.jpg └── 004_e.jpg
Ikiwa unataka kuanza na 1 badala ya 0, weka hoja ya pili ya kuhesabu hadi 1.
for i, f in enumerate(files, 1): os.rename(f, os.path.join(path, '{0:03d}'.format(i) + '_' + os.path.basename(f)))
Inakwenda hivi.
. └── testdir ├── 001_a.jpg ├── 002_b.jpg ├── 003_c.jpg ├── 004_d.jpg └── 005_e.jpg
Mfano wa msimbo wa kuongeza mfuatano/mfuatano wa nambari baada ya faili
Tumia os.path.splitext() kugawanya faili katika kiendelezi na njia ya mizizi, na kisha uongeze mifuatano au nambari za mfuatano kwenye njia ya mizizi. Katika mfano ufuatao, _img huongezwa baada ya majina yote ya faili.
import os import glob files = glob.glob('./testdir/*') for f in files: ftitle, fext = os.path.splitext(f) os.rename(f, ftitle + '_img' + fext)
Matokeo yake ni haya.
. └── testdir ├── a_img.jpg ├── b_img.jpg ├── c_img.jpg ├── d_img.jpg └── e_img.jpg
Kama ilivyo kwa kuongeza kamba / nambari ya mfuatano kabla ya faili, badilisha kwa taarifa wakati wa kuongeza nambari ya mfuatano.
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