اسکریپت برای تبدیل فرمت فایلها با پایتون: اتوماسیون و اسکریپتنویسی
در دنیای امروز، پردازش و تبدیل فرمت فایلها یکی از وظایف رایج در بسیاری از زمینهها است. از مدیریت اسناد و تصاویر گرفته تا آمادهسازی دادهها برای تحلیل، نیاز به ابزاری کارآمد برای این منظور همواره احساس میشود. پایتون، با کتابخانههای قدرتمند و انعطافپذیری که ارائه میدهد، یک انتخاب عالی برای اتوماسیون این فرآیندها است. این مقاله به بررسی روشهای مختلف تبدیل فرمت فایلها با استفاده از پایتون میپردازد و مثالهای عملی برای درک بهتر مفاهیم ارائه میدهد. این آموزش در دسته بندی ‘اتوماسیون و اسکریپتنویسی’ قرار میگیرد.
چرا پایتون برای تبدیل فرمت فایلها؟
پایتون به دلایل متعددی برای تبدیل فرمت فایلها مناسب است:
- سادگی و خوانایی: سینتکس پایتون به گونهای است که یادگیری و استفاده از آن را آسان میکند.
- کتابخانههای گسترده: پایتون دارای کتابخانههای متعددی است که برای کار با فرمتهای مختلف فایلها طراحی شدهاند.
- قابلیت حمل: اسکریپتهای پایتون را میتوان به راحتی بر روی سیستمعاملهای مختلف اجرا کرد.
- اتوماسیون: پایتون به خوبی با سایر ابزارهای اتوماسیون ادغام میشود و امکان ایجاد فرآیندهای خودکار را فراهم میکند.
تبدیل فرمتهای تصویری
یکی از رایجترین کاربردهای تبدیل فرمت فایلها، کار با تصاویر است. کتابخانه Pillow (PIL) یک ابزار قدرتمند برای این منظور است.
نصب Pillow
برای نصب Pillow میتوانید از pip استفاده کنید:
pip install Pillow
مثال: تبدیل تصویر JPEG به PNG
from PIL import Image
def convert_jpeg_to_png(jpeg_path, png_path):
"""
تبدیل یک تصویر JPEG به PNG.
"""
try:
img = Image.open(jpeg_path)
img.save(png_path, "PNG")
print(f"تبدیل با موفقیت انجام شد: {jpeg_path} -> {png_path}")
except FileNotFoundError:
print(f"خطا: فایل {jpeg_path} یافت نشد.")
except Exception as e:
print(f"خطا در تبدیل: {e}")
# مثال استفاده
jpeg_file = "image.jpg"
png_file = "image.png"
convert_jpeg_to_png(jpeg_file, png_file)
در این مثال، ابتدا کتابخانه Pillow را وارد میکنیم. سپس، تابع convert_jpeg_to_png یک تصویر JPEG را باز کرده و آن را با فرمت PNG ذخیره میکند. مدیریت خطا نیز در کد گنجانده شده است تا در صورت بروز مشکل، پیام مناسبی نمایش داده شود.
تبدیل فرمتهای صوتی
برای تبدیل فرمتهای صوتی، کتابخانه pydub میتواند مفید باشد.
نصب pydub
برای نصب pydub میتوانید از pip استفاده کنید. همچنین، برای استفاده از pydub، نیاز به نصب FFmpeg نیز دارید.
pip install pydub
FFmpeg را میتوانید از وبسایت رسمی آن دانلود و نصب کنید: https://ffmpeg.org/
مثال: تبدیل فایل MP3 به WAV
from pydub import AudioSegment
def convert_mp3_to_wav(mp3_path, wav_path):
"""
تبدیل یک فایل MP3 به WAV.
"""
try:
sound = AudioSegment.from_mp3(mp3_path)
sound.export(wav_path, format="wav")
print(f"تبدیل با موفقیت انجام شد: {mp3_path} -> {wav_path}")
except FileNotFoundError:
print(f"خطا: فایل {mp3_path} یافت نشد.")
except Exception as e:
print(f"خطا در تبدیل: {e}")
# مثال استفاده
mp3_file = "audio.mp3"
wav_file = "audio.wav"
convert_mp3_to_wav(mp3_file, wav_file)
در این مثال، ابتدا فایل MP3 را با استفاده از AudioSegment.from_mp3 باز میکنیم و سپس آن را با فرمت WAV با استفاده از sound.export ذخیره میکنیم.
تبدیل فرمتهای متنی
برای تبدیل فرمتهای متنی، میتوان از روشهای سادهتری استفاده کرد، مانند خواندن فایل و نوشتن آن با فرمت جدید.
مثال: تبدیل فایل CSV به TXT
import csv
def convert_csv_to_txt(csv_path, txt_path):
"""
تبدیل یک فایل CSV به TXT.
"""
try:
with open(csv_path, 'r', encoding='utf-8') as csvfile, open(txt_path, 'w', encoding='utf-8') as txtfile:
reader = csv.reader(csvfile)
for row in reader:
txtfile.write('t'.join(row) + 'n')
print(f"تبدیل با موفقیت انجام شد: {csv_path} -> {txt_path}")
except FileNotFoundError:
print(f"خطا: فایل {csv_path} یافت نشد.")
except Exception as e:
print(f"خطا در تبدیل: {e}")
# مثال استفاده
csv_file = "data.csv"
txt_file = "data.txt"
convert_csv_to_txt(csv_file, txt_file)
در این مثال، فایل CSV را باز کرده و هر سطر را با استفاده از کاراکتر Tab جدا میکنیم و در فایل TXT مینویسیم. استفاده از encoding='utf-8' برای پشتیبانی از کاراکترهای فارسی ضروری است.
تبدیل فرمتهای PDF
برای کار با فایلهای PDF، کتابخانه PyPDF2 میتواند مفید باشد.
نصب PyPDF2
برای نصب PyPDF2 میتوانید از pip استفاده کنید:
pip install PyPDF2
مثال: استخراج متن از PDF
import PyPDF2
def extract_text_from_pdf(pdf_path, txt_path):
"""
استخراج متن از یک فایل PDF و ذخیره آن در یک فایل TXT.
"""
try:
with open(pdf_path, 'rb') as pdf_file, open(txt_path, 'w', encoding='utf-8') as txt_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
text = page.extract_text()
txt_file.write(text)
print(f"استخراج متن با موفقیت انجام شد: {pdf_path} -> {txt_path}")
except FileNotFoundError:
print(f"خطا: فایل {pdf_path} یافت نشد.")
except Exception as e:
print(f"خطا در استخراج: {e}")
# مثال استفاده
pdf_file = "document.pdf"
txt_file = "document.txt"
extract_text_from_pdf(pdf_file, txt_file)
در این مثال، فایل PDF را باز کرده و متن هر صفحه را استخراج کرده و در فایل TXT ذخیره میکنیم.
اتوماسیون تبدیل فرمت فایلها
با استفاده از پایتون، میتوان فرآیند تبدیل فرمت فایلها را به طور کامل خودکار کرد. به عنوان مثال، میتوان یک اسکریپت نوشت که به طور خودکار تمام فایلهای JPEG موجود در یک پوشه را به PNG تبدیل کند.
مثال: تبدیل خودکار تمام فایلهای JPEG در یک پوشه
import os
from PIL import Image
def convert_all_jpeg_to_png(folder_path):
"""
تبدیل تمام فایلهای JPEG موجود در یک پوشه به PNG.
"""
for filename in os.listdir(folder_path):
if filename.endswith(".jpg") or filename.endswith(".jpeg"):
jpeg_path = os.path.join(folder_path, filename)
png_path = os.path.join(folder_path, filename[:-4] + ".png")
try:
img = Image.open(jpeg_path)
img.save(png_path, "PNG")
print(f"تبدیل با موفقیت انجام شد: {jpeg_path} -> {png_path}")
except Exception as e:
print(f"خطا در تبدیل {jpeg_path}: {e}")
# مثال استفاده
folder = "images"
convert_all_jpeg_to_png(folder)
این اسکریپت تمام فایلهای JPEG و JPEG موجود در پوشه مشخص شده را پیدا کرده و آنها را به فرمت PNG تبدیل میکند.
نتیجهگیری
پایتون یک ابزار قدرتمند برای اتوماسیون تبدیل فرمت فایلها است. با استفاده از کتابخانههای متنوعی که در دسترس هستند، میتوان به راحتی فرآیندهای تبدیل را خودکار کرد و در زمان و تلاش صرفهجویی کرد. این مقاله تنها یک مقدمه بر این موضوع بود و امکانات بسیار بیشتری برای کار با فرمتهای مختلف فایلها در پایتون وجود دارد. با تمرین و مطالعه بیشتر، میتوانید مهارتهای خود را در این زمینه ارتقا دهید و از پایتون برای حل مشکلات پیچیدهتر استفاده کنید.

بدون دیدگاه