از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش کپی کردن فایل ها در پایتون
سرفصلهای مطلب
معرفی
چه در حال خواندن دادهها از فایلها یا نوشتن دادهها در فایلها باشید، درک عملیات فایل مهم است. در پایتون و زبان های دیگر، ما اغلب نیاز داریم که فایل ها را از یک دایرکتوری به پوشه دیگر یا حتی در همان دایرکتوری کپی کنیم. این مقاله شما را در این زمینه راهنمایی می کند process کپی کردن فایل ها در پایتون با استفاده از ماژول ها و روش های مختلف
سیستم فایل پایتون و عملیات فایل
پایتون چندین ماژول و توابع داخلی را برای تعامل با سیستم فایل و انجام عملیات فایل فراهم می کند. دو ماژول پرکاربرد برای عملیات فایل عبارتند از os
و shutil
ماژول ها
این os
ماژول راهی برای استفاده از عملکرد وابسته به سیستم عامل ارائه می دهد. این شامل توابعی برای تعامل با فایل سیستم است، مانند os.rename()
، os.remove()
، os.mkdir()
، و غیره.
import os
os.rename('old_name.txt', 'new_name.txt')
os.remove('file_to_remove.txt')
os.mkdir('new_directory')
این shutil
ماژول تعدادی عملیات سطح بالا را روی فایل ها و مجموعه فایل ها ارائه می دهد. تحت ماژول های ابزار استاندارد پایتون قرار می گیرد. این ماژول به خودکارسازی کمک می کند process کپی و حذف فایل ها و دایرکتوری ها
import shutil
shutil.copy('source.txt', 'destination.txt')
shutil.rmtree('directory_to_remove')
توجه داشته باشید: در حالی که os
توابع ماژول برای عملیات ساده فایل، برای عملیات فایل های سطح بالاتر مانند کپی یا انتقال فایل ها و دایرکتوری ها کارآمد هستند. shutil
توابع ماژول راحت تر هستند.
حال، بیایید عمیق تر به روش استفاده از این ماژول ها برای کپی فایل ها در پایتون بپردازیم.
روش کپی کردن فایل ها در پایتون
پایتون به عنوان یک زبان برنامه نویسی سطح بالا، ماژول های مختلفی را برای ساده سازی وظایف مختلف در اختیار ما قرار می دهد. یکی از این کارها کپی کردن فایل هاست. چه بخواهید از داده های خود نسخه پشتیبان تهیه کنید یا آن ها را به مکان دیگری منتقل کنید، پایتون کپی کردن فایل ها و دایرکتوری ها را آسان می کند. در اینجا ما نگاهی به روش کپی کردن فایل ها با استفاده از ماژول های داخلی مختلف خواهیم داشت.
با استفاده از shutil ماژول برای کپی کردن فایل ها
این shutil
ماژول روش هایی دارد که به عملیات هایی مانند کپی کردن، جابجایی یا حذف فایل ها/دایرکتوری ها کمک می کند. یکی از پرکاربردترین قابلیت های آن امکان کپی فایل ها است.
برای کپی کردن یک فایل در پایتون با استفاده از shutil
ماژول، ما از shutil.copy()
تابع. این تابع دو پارامتر دارد: مسیر فایل مبدا و مسیر مقصد.
بیایید به یک مثال نگاه کنیم:
import shutil
source = "/path/to/source/file.txt"
destination = "/path/to/destination/file.txt"
shutil.copy(source, destination)
در این قطعه کد، ابتدا کد را وارد می کنیم shutil
مدول. سپس مسیر فایل مبدا و مقصد را تعریف می کنیم. در نهایت، ما به shutil.copy()
تابع با مبدا و مقصد به عنوان آرگومان.
توجه داشته باشید: این shutil.copy()
عملکرد خواهد شد بازنویسی فایل مقصد اگر از قبل وجود داشته باشد. بنابراین، هنگام استفاده از آن احتیاط کنید!
اگر میخواهید در حین کپی کردن، ابردادهها (مانند مجوزها، زمانهای اصلاح) حفظ شود، میتوانید از shutil.copy2()
تابع. این کار به همان روش انجام می شود shutil.copy()
، اما فراداده را نیز کپی می کند.
import shutil
source = "/path/to/source/file.txt"
destination = "/path/to/destination/file.txt"
shutil.copy2(source, destination)
با استفاده از سیستم عامل ماژول برای کپی کردن فایل ها
پایتون داخلی os
ماژول یکی دیگر از ابزارهای عالی برای تعامل با سیستم عامل است. در میان بسیاری از ویژگی های آن، و درست مانند shutil
، به ما امکان کپی فایل ها را می دهد. با این حال، توجه به این نکته ضروری است که os
ماژول روش مستقیمی را برای کپی کردن فایل هایی مانند shutil
میکند. در عوض، ما می توانیم استفاده کنیم os.system()
تابعی برای اجرای دستورات پوسته در اسکریپت پایتون ما.
در اینجا روش استفاده از آن آمده است os.system()
عملکرد کپی کردن یک فایل:
import os
src = "/path/to/source/file.txt"
dest = "/path/to/destination/file.txt"
os.system(f'cp {src} {dest}')
پس از اجرای این اسکریپت، آن را خواهید یافت file.txt
از مسیر مبدا به مسیر مقصد کپی شده است.
صبر کن! از آنجا که os.system()
تابع می تواند هر فرمان پوسته ای را اجرا کند، همچنین در صورت سوء استفاده می تواند یک خطر امنیتی بالقوه باشد، بنابراین همیشه هنگام استفاده از آن مراقب باشید.
این ممکن است یک راه مفید برای کپی کردن فایل ها باشد، اگر شما همچنین نیاز به اجرای دستورات پوسته دیگر یا استفاده از آن دارید cp
پرچم هایی که با آنها در دسترس نیست shutil
روش های
کپی کردن فایل ها با Wildcards
در موارد استفاده دیگر، ممکن است بخواهید چندین فایل را همزمان کپی کنید. فرض کنید می خواهیم همه را کپی کنیم .txt
فایل ها در یک دایرکتوری ما می توانیم با استفاده از wildcard (*
) در مسیرهای فایل ما. این glob
ماژول در پایتون را می توان برای یافتن تمام نام مسیرهایی که با یک الگوی مشخص مطابق با قوانین استفاده شده توسط پوسته یونیکس مطابقت دارند، استفاده کرد.
در اینجا روش استفاده از آن است glob
ماژول برای کپی کردن همه .txt
فایل ها از یک دایرکتوری به پوشه دیگر:
import glob
import shutil
src_dir = "/path/to/source/directory/*.txt"
dest_dir = "/path/to/destination/directory/"
txt_files = glob.glob(src_dir)
for file in txt_files:
shutil.copy(file, dest_dir)
در این کد از glob
برای دریافت لیستی از تمام فایل های متنی در فهرست منبع خود، که سپس آن ها را تکرار کرده و هر کدام را جداگانه کپی می کنیم.
پس از اجرای این اسکریپت، همه آن را خواهید دید .txt
فایلهای دایرکتوری مبدا در فهرست مقصد کپی شدهاند.
کپی کردن دایرکتوری ها در پایتون
همانطور که دیدیم، کپی کردن فایل های فردی در پایتون کاملاً ساده است. اما اگر بخواهید کل دایرکتوری را کپی کنید چه؟ در حالی که پیچیده تر به نظر می رسد، در واقع انجام این کار با آن بسیار آسان است shutil
مدول. این copytree()
تابع به شما این امکان را می دهد که دایرکتوری ها را به همراه تمام فایل ها و زیر شاخه های موجود در آنها کپی کنید.
import shutil
shutil.copytree('/path/to/source_directory', '/path/to/destination_directory')
با این کار کل دایرکتوری در مسیر مبدا به مسیر مقصد کپی می شود. اگر دایرکتوری مقصد وجود نداشته باشد، copytree()
آن را ایجاد خواهد کرد.
توجه داشته باشید: اگر فهرست مقصد از قبل وجود داشته باشد، copytree()
الف را مطرح خواهد کرد FileExistsError
. برای جلوگیری از این امر، قبل از اجرای تابع مطمئن شوید که دایرکتوری مقصد وجود ندارد.
مدیریت خطا و انواع خطاها
هنگام برخورد با عملیات فایل در پایتون، رسیدگی به خطاهای احتمالی مهم است. انواع مختلفی از خطاها وجود دارد که ممکن است با آنها روبرو شوید که برخی از رایجترین آنها هستند FileNotFoundError
، PermissionError
، و IsADirectoryError
.
شما می توانید این خطاها را با استفاده از پایتون مدیریت کنید try/except
بلوک هایی مانند این:
import shutil
try:
shutil.copy2('/path/to/source_file', '/path/to/destination_file')
except FileNotFoundError:
print("The source or destination file was not found.")
except PermissionError:
print("You don't have permission to access the source or destination file.")
except IsADirectoryError:
print("The source or destination path you provided is a directory, not a file.")
در این مثال، ما از shutil.copy2()
عملکرد کپی کردن یک فایل اگر فایل مبدأ یا مقصد وجود نداشته باشد، الف FileNotFoundError
ظهور کرده. اگر کاربر مجوزهای لازم را ندارد، الف PermissionError
ظهور کرده. اگر مسیر مبدا یا مقصد به جای فایل، یک دایرکتوری باشد، an IsADirectoryError
ظهور کرده. گرفتن هر خطا به این روش به شما امکان می دهد هر مورد را به روش مناسب مدیریت کنید.
نتیجه
در این مقاله راه های مختلف برای کپی فایل ها در پایتون را نشان داده ایم. دیدیم که چگونه پایتون تعبیه شده است shutil
و os
ماژول ها ابزارهای ساده و قدرتمندی را برای کپی کردن فایل در اختیار ما قرار می دهند. ما همچنین روش استفاده از حروف عام برای کپی کردن چندین فایل و روش کپی کردن کل دایرکتوری ها را نشان دادیم.
و در نهایت، ما به چند نوع مختلف از خطاهای رایجی که ممکن است در طول عملیات فایل رخ دهد و روش رسیدگی به آنها نگاه کنیم. درک این خطاها می تواند به شما کمک کند کد خود را با کارآمدتر اشکال زدایی کنید و از مشکلاتی مانند از دست دادن داده ها جلوگیری کنید.
(برچسبها به ترجمه)# python
منتشر شده در 1402-12-27 17:37:05