- Os модуль болон glob модулийг ашиглан нэрийг нь бөөнөөр нь өөрчил.
- Глоб модулийн тусламжтайгаар файлын жагсаалтыг аваарай
- os.rename()-ээр нэрээ солих
- str.format() ашиглан тэгээр дүүргэсэн дараалсан тоонуудыг үүсгэж байна.
- Файлын өмнө мөр/дараалсан дугаар нэмэх кодын жишээ
- Файлын ард мөр/дараалсан дугаар нэмэх кодын жишээ
Os модуль болон glob модулийг ашиглан нэрийг нь бөөнөөр нь өөрчил.
Файлын нэрийн өмнө болон хойно мөр эсвэл дараалсан тоо нэмж хавтас доторх файлын нэрийг бөөнөөр нь өөрчлөх, нэрийг өөрчлөхийн тулд os модуль болон glob модулийг ашиглана уу.
Файлын бүтцийн жишээ
Дараах файлын бүтцийг жишээ болгон авч үзье. Энэ тохиолдолд хавтсанд зөвхөн файлууд (хавтас байхгүй) байгаа гэж үздэг.
. └── 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 модулийн 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,*кваргс)
Мөр форматлах үйлдлийг гүйцэтгэдэг. Энэ аргыг дуудаж буй мөр нь {}-ээр тусгаарлагдсан ердийн тэмдэгтүүд эсвэл орлуулах талбаруудыг агуулж болно.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 хэллэгийг дараах байдлаар өөрчил: 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 мэдэгдлийг өөрчил.
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