- OS modulu və glob modulundan istifadə edərək toplu olaraq adını dəyişdirin.
- Glob modulu ilə fayl siyahısını əldə edin
- os.rename() ilə adını dəyişdirin
- str.format() ilə sıfır doldurulmuş ardıcıl nömrələrin yaradılması
- Fayldan əvvəl sətir/ardıcıl nömrə əlavə etmək üçün kod nümunəsi
- Fayldan sonra sətir/ardıcıl nömrə əlavə etmək üçün kod nümunəsi
OS modulu və glob modulundan istifadə edərək toplu olaraq adını dəyişdirin.
Fayl adlarından əvvəl və sonra sətirlər və ya ardıcıl nömrələr əlavə etməklə qovluqdakı fayl adlarını kütləvi şəkildə dəyişdirmək və adını dəyişmək üçün OS modulu və glob modulundan istifadə edin.
Nümunə fayl strukturu
Nümunə olaraq aşağıdakı fayl strukturunu götürün. Bu halda, qovluqda yalnız faylların (qovluqların olmadığı) olduğu güman edilir.
. └── testdir ├── a.jpg ├── b.jpg ├── c.jpg ├── d.jpg └── e.jpg
Nəzərə almaq lazım olanlar
Proses faylın adının dəyişdirilməsini nəzərdə tutduğundan, uğursuzluq halında onu saxlamaq üçün orijinal faylı ayrıca saxlayın.
Glob modulu ilə fayl siyahısını əldə edin
Qlob modulu Unix qabığının istifadə etdiyi qaydalara uyğun olaraq göstərilən nümunəyə uyğun gələn bütün yol adlarını tapacaq.
glob — Unix style pathname pattern expansion — Python 3.10.0 Documentation
Məsələn, cari kataloqda fayl və kataloq adlarının siyahısını əldə etmək üçün aşağıdakı funksiyadan istifadə etmək olar.glob.glob('./*')
Arqument mütləq yol və ya nisbi yol ola bilər.
Bu nümunədə aşağıdakı kimi görünəcək.
import glob print(glob.glob('./testdir/*')) # => ['./testdir/a.jpg', './testdir/b.jpg', './testdir/c.jpg', './testdir/d.jpg', './testdir/e.jpg']
a.jpg əvəzinə arqument yolu əlavə etməklə aşağıdakıları əldə edə bilərsiniz../testdir/a.jpg
Siz həmçinin aşağıda göstərildiyi kimi yalnız xüsusi uzantıları əldə etmək üçün joker işarələrdən (*) istifadə edə bilərsiniz.glob.glob('./testdir/*.jpg')
Aşağıdakı nümunə uyğunluğu istifadə edilə bilər.
*
: Hər şeyə uyğundur.?
İstənilən tək xarakterə uyğun gəlir.[abc]
: a, b və ya c simvolundan bir simvola uyğun gəlir.[!abc]
: a, b və ya c simvolundan başqa bir simvola uyğun gəlir
os.rename() ilə adını dəyişdirin
os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Faylın və ya qovluğun src adını dst olaraq dəyişdirin.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
Os modulunun rename() funksiyasından istifadə edin ki, bu da adından göründüyü kimi adını dəyişdirəcək.
import os os.rename('./testdir/a.jpg', './testdir/a_000.jpg')
Sonra a.jpg adı a_000.jpg olaraq dəyişdiriləcək.
str.format() ilə sıfır doldurulmuş ardıcıl nömrələrin yaradılması
Məsələn, onlarla fayla ardıcıl nömrələr əlavə edərkən “0” və ya “1” əvəzinə “00” və ya “11” istifadə etmək istəyirik. Sıfırları bu şəkildə doldurmaq istəyirsinizsə, str.format() metodundan istifadə edin.
str.format(args,*kvarqlar)
Simli formatlaşdırma əməliyyatlarını yerinə yetirir. Bu metodu çağıran sətirdə normal simvollar və ya {} ilə ayrılmış əvəzetmə sahələri ola bilər.Built-in Types — Python 3.10.0 Documentation
Format spesifikasiyası sətirlərinin sintaksisi
Formatlama sətirində qıvrımlı mötərizədə {} alınmış “əvəzetmə sahəsi” var.Əvəzetmə sahəsinin sintaksisi aşağıdakı kimidir:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
Daha sadə dillə desək, dəyişdirmə sahəsi sahə_adı ilə başlayır, bu, göstərilən obyektin dəyərinin formatlanmasına və əvəzetmə sahəsinin əvəzinə çıxışa daxil edilməsinə səbəb olur. Sahənin_adından sonra, çevrilmə sahəsindən sonra nida işarəsi ‘! Sahənin_adından sonra, çevrilmə sahəsindən sonra nida işarəsi ‘! Format_spec sonunda iki nöqtə ‘:’ işarəsi ilə yazıla bilər. Bu, əvəz olunacaq dəyərin standart olmayan formatını müəyyən edir.
string — Common string operations — Python 3.10.0 Documentation
Hələlik onu 0 ilə doldurmaq istəyirsinizsə, aşağıdakıları edin.
# 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
Fayldan əvvəl sətir/ardıcıl nömrə əlavə etmək üçün kod nümunəsi
Əvvəlcə os.path.basename() ilə fayl adını əldə edin. Sonra fayl adının qarşısına sətir və ya ardıcıl nömrə əlavə edin və onu os.path.join() ilə orijinal yol ilə birləşdirin.
Aşağıdakı nümunə bütün fayl adlarının önünə img_ əlavə edir.
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)))
Nəticə aşağıdakı kimidir.
. └── testdir ├── img_a.jpg ├── img_b.jpg ├── img_c.jpg ├── img_d.jpg └── img_e.jpg
Ardıcıl nömrələr əlavə etmək istəyirsinizsə, for ifadəsini bu kimi bir şeyə dəyişdirin: nömrələri 0-dan sıra ilə hesablamaq üçün enumerate() edin. Bu halda, nömrə üç rəqəmlə doldurulur.
for i, f in enumerate(files): os.rename(f, os.path.join(path, '{0:03d}'.format(i) + '_' + os.path.basename(f)))
Nəticə budur.
. └── testdir ├── 000_a.jpg ├── 001_b.jpg ├── 002_c.jpg ├── 003_d.jpg └── 004_e.jpg
Əgər 0 əvəzinə 1 ilə başlamaq istəyirsinizsə, sadalamağın ikinci arqumentini 1-ə təyin edin.
for i, f in enumerate(files, 1): os.rename(f, os.path.join(path, '{0:03d}'.format(i) + '_' + os.path.basename(f)))
Bu belə gedir.
. └── testdir ├── 001_a.jpg ├── 002_b.jpg ├── 003_c.jpg ├── 004_d.jpg └── 005_e.jpg
Fayldan sonra sətir/ardıcıl nömrə əlavə etmək üçün kod nümunəsi
Faylı genişləndirmə və kök yola bölmək üçün os.path.splitext() istifadə edin və sonra kök yola sətirlər və ya ardıcıl nömrələr əlavə edin. Aşağıdakı misalda bütün fayl adlarından sonra _img əlavə olunur.
import os import glob files = glob.glob('./testdir/*') for f in files: ftitle, fext = os.path.splitext(f) os.rename(f, ftitle + '_img' + fext)
Nəticə belədir.
. └── testdir ├── a_img.jpg ├── b_img.jpg ├── c_img.jpg ├── d_img.jpg └── e_img.jpg
Fayldan əvvəl sətir/ardıcıl nömrə əlavə edərkən olduğu kimi, ardıcıl nömrə əlavə edərkən for ifadəsini dəyişdirin.
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