با Python و PyQt یک ابزار تغییر نام فایل انبوه بسازید.
موسسه پایاپروژه به عنوان متصدی انجام پروژه های پایتون وظیفه ی خود می داند که در راستای آموزش نرم افزار پایتون گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی پایتون مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.
در این پروژه پایتون، نحوه ایجاد یک ابزار تغییر نام فایل با استفاده از Python و PyQt5 را یاد خواهیم گرفت. PyQt5 مجموعه ای از اتصالات پایتون برای چارچوب برنامه کاربردی متقابل پلتفرم Qt است که برای ایجاد رابط های گرافیکی کاربر GUI استفاده می شود.
ما از ماژول سیستم عامل برای تعامل با سیستم فایل و کلاس های QFileDialog و QMessageBox از PyQt5 استفاده خواهیم کرد تا به کاربر امکان انتخاب پوشه و نمایش پیام ها را به ترتیب بدهیم.
ابزار تغییر نام فایل ما یک رابط کاربری ساده با یک ویرایش خط برای نمایش پوشه انتخابی، یک ویرایش خط برای الگوی جستجو، یک ویرایش خط برای رشته جایگزین و یک دکمه تغییر نام خواهد داشت. هنگامی که دکمه تغییر نام کلیک می شود، ابزار تمام فایل های موجود در پوشه انتخاب شده را که نام آنها حاوی الگوی جستجو است جستجو می کند و با استفاده از رشته جایگزین نام آنها را تغییر می دهد.
مراحل انجام پروژه تغییر نام فایل انبوه در پایتون
1. وارد کردن ماژول ها:
ماژول های لازم را وارد می کند و یک شی QApplication ایجاد می کند. کلاس QApplication برای هر برنامه PyQt5 با رابط کاربری گرافیکی لازم است.
import os
from PyQt5 import QtWidgets, QtGui
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
2. تعریف کلاس FileRenamer:
این کد، کلاس FileRenamer را در پروژه پایتون تعریف می کند.
متد __init__ FileRenamer ویجت را مقداردهی اولیه می کند و متد initUI را برای تنظیم رابط کاربری ویجت فراخوانی می کند. روشinitUI چندین ویجت از جمله QLabels، QLineEdits و QPushButtons ایجاد می کند و آنها را با استفاده از QgridLayout مرتب می کند. همچنین عنوان پنجره و نماد پنجره را با استفاده از setWindowTitle وsetWindowIcon تنظیم می کند.
:class FileRenamer(QtWidgets.QWidget)
:def __init__(self)
()__super().__init
()self.initUI
:def initUI(self)
یک برچسب برای انتخاب پوشه ایجاد کنید#
self.folderLabel = QtWidgets.QLabel(‘Folder:’)
یک ویرایش خط برای نمایش پوشه انتخابی ایجاد کنید #
() self.folderEdit = QtWidgets.QLineEdit
یک دکمه برای انتخاب پوشه ایجاد کنید#
self.folderButton = QtWidgets.QPushButton(‘Browse…’)
یک برچسب برای الگوی جستجو ایجاد کنید#
self.searchLabel = QtWidgets.QLabel(‘Search Pattern:’)
یک ویرایش خط برای الگوی جستجو ایجاد کنید#
() self.searchEdit = QtWidgets.QLineEdit
یک برچسب برای رشته جایگزین ایجاد کنید #
self.replaceLabel = QtWidgets.QLabel(‘Replacement:’)
یک ویرایش خط برای رشته جایگزین ایجاد کنید #
() self.replaceEdit = QtWidgets.QLineEdit
یک دکمه تغییر نام ایجاد کنید #
self.renameButton = QtWidgets.QPushButton(‘Rename’)
یک طرح بندی شبکه ای ایجاد کنید و ویجت ها را به آن اضافه کنید#
() layout = QtWidgets.QGridLayout
layout.addWidget(self.folderLabel, 0, 0)
layout.addWidget(self.folderEdit, 0, 1)
layout.addWidget(self.folderButton, 0, 2)
layout.addWidget(self.searchLabel, 1, 0)
layout.addWidget(self.searchEdit, 1, 1)
layout.addWidget(self.replaceLabel, 2, 0)
layout.addWidget(self.replaceEdit, 2, 1)
layout.addWidget(self.renameButton, 3, 1)
self.setLayout(layout)
عنوان پنجره را تنظیم کنید#
self.setWindowTitle(‘Bulk File Rename Tool’)
Set the window icon #
self.setWindowIcon(QtGui.QIcon(‘icon.png’))
دکمه انتخاب پوشه را به روش فولدر سلکشن وصل کنید#
self.folderButton.clicked.connect(self.folderSelection)
دکمه تغییر نام را به روش رینیم فایل وصل کنید #
self.renameButton.clicked.connect(self.renameFiles)
3. اتصال دکمه به پوشه موردنظر:
با folderSelectionسیگنال کلیک شده دکمه به انتخاب پوشه متصل می شود. هنگامی که دکمه کلیک می شود، یک گفتگوی انتخاب پوشه را نشان می دهد و پوشه انتخاب شده را در ویرایش خط تنظیم می کند.
:def folderSelection(self)
یک گفتگوی انتخاب پوشه را نشان دهید و انتخاب شده را تنظیم کنید#
پوشه در ویرایش خط #
.folder = QtWidgets.QFileDialog
getExistingDirectory(self, ‘Select Folder’)
self.folderEdit.setText(folder)
4. استفاده از renameFiles:
با renameFiles سیگنال کلیک شده دکمه به تغییر نام متصل می شود. وقتی روی دکمه کلیک میشود، پوشه، الگوی جستجو و رشته جایگزین را از ویرایشهای خط دریافت میکند و همه فایلهای موجود در پوشه را که نامشان حاوی الگوی جستجو است با استفاده از رشته جایگزین تغییر نام میدهد. اگر عملیات تغییر نام موفقیت آمیز باشد، یک جعبه پیام برای تأیید تغییر نام فایل ها نشان می دهد.
:def renameFiles(self)
پوشه، الگوی جستجو و جایگزینی را دریافت کنید#
رشته از ویرایش های خط #
()folder = self.folderEdit.text
()search = self.searchEdit.text
()replace = self.replaceEdit.text
بررسی کنید که پوشه و الگوی جستجو خالی نیستند#
: if folder and search
تمام فایل های موجود در پوشه را حلقه بزنید #
:for filename in os.listdir(folder)
بررسی کنید که آیا فایل با الگوی جستجو مطابقت دارد یا خیر #
:if search in filename
مسیر فایل را دریافت کنید #
filepath = os.path.join(folder, filename)
نام فایل و پسوند فایل را جدا کنید#
file_name, file_ext = os.path.splitext(filename)
نام فایل جدید را با جایگزینی ایجاد کنید#
لگوی جستجو با رشته جایگزین #
new_file_name = file_name.replace(search, replace)
نام جدید فایل را با پسوند فایل ایجاد کنید #
new_name = new_file_name + file_ext
مسیر فایل جدید را ایجاد کنید #
new_path = os.path.join(folder, new_name)
فایل را تغییر نام دهید #
os.rename(filepath, new_path)
برای تأیید تغییر نام فایل ها، یک کادر پیام نمایش دهید #
QtWidgets.QMessageBox.information)
(‘self, ‘Renamed’, ‘Files have been renamed’
در نهایت، اسکریپت یک نمونه از ویجت FileRenamer ایجاد می کند و آن را با استفاده از show نشان می دهد. متد app.exec_ وارد حلقه رویداد اصلی می شود و منتظر می ماند تا ویجت FileRenamer بسته شود. هنگامی که ویجت بسته می شود، اسکریپت از حلقه رویداد خارج می شود و خاتمه می یابد.
:’__if __name__ == ‘__main
# یک نمونه از ویجت فایل رینیم ایجاد کنید و آن را نشان دهید
() renamer = FileRenamer
() renamer.show
sys.exit(app.exec_())
خروجی:
بیایید نگاهی به نتیجه خروجی پروژه پایتون و مراحلی که برای تغییر نام انبوه فایل ها باید طی شود، بیاندازیم:

پنجره برنامه QT ما

مسیر پوشه ای که باید تغییر نام در آن انجام شود را انتخاب کنید. این پنجره با کلیک بر روی دکمه مرور در برنامه QT ما ظاهر می شود

رشته جستجو و جایگزینی را وارد کنید

تغییر نام فایل ها طبق الگو پس انجام پروژه پایتون
