از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
باز کردن چندین فایل با استفاده از “with open” در پایتون
سرفصلهای مطلب
معرفی
پایتون چند راه بسیار راحت برای کار با اشیاء فایل مانند از جمله with
ویژگی. اما اگر بخواهیم چندین فایل را به این روش باز کنیم چه؟ اگر یک دسته تو در تو داشتید، می توانید دقیقاً “تمیز” نبود with open
بیانیه. در این مقاله به شما نشان خواهیم داد که چگونه چندین فایل را با استفاده از آن باز کنید with open
بیانیه در پایتون
“با” در پایتون چیست؟
این with
دستورات در پایتون در مدیریت استثنا استفاده میشود تا کد را پاکتر و درک آن آسانتر کند. مدیریت منابع رایج مانند جریان فایل را ساده می کند. بیایید نگاهی گذرا به نحوه عملکرد آن بیندازیم:
with open('example.txt', 'r') as file:
data = file.read()
در قطعه کد بالا، with open('example.txt', 'r') as file:
هست with
بیانیه ای که به آن اشاره می کنیم این open()
تابع برای باز کردن یک فایل و 'example.txt'
نام فایلی است که می خواهیم باز کنیم. 'r'
حالتی است که می خواهیم فایل را در آن باز کنیم. در این حالت، حالت خواندن است. این as
کلمه کلیدی برای ایجاد نام مستعار استفاده می شود – در این مورد، file
.
سپس کد فایل را می خواند example.txt
و محتوای آن را به متغیر اختصاص می دهد data
. یکی از مزایای استفاده از with
این است که به طور خودکار از بسته شدن فایل پس از عدم نیاز به آن مراقبت می کند، حتی اگر موارد استثنا مطرح شده باشد. این کار مدیریت دستی فایل ها را بسیار آسان تر می کند.
توجه داشته باشید: این with
بیانیه نه تنها برای باز کردن فایل ها استفاده می شود، بلکه می تواند با اشیاء دیگر مانند رشته ها، قفل ها و اتصالات شبکه نیز استفاده شود. ایده اصلی مدیریت منابعی است که می توانند باز و بسته باشند.
این with open
بیانیه شبیه به زیر است:
try:
file = open('example.txt', 'r')
data = file.read()
finally:
file.close()
این کد پرمخاطب تر است و به احتمال زیاد فراموش می کنید که فایل را ببندید. استفاده کردن with
یک روش پایتونیک تر برای مدیریت فایل ها است.
چرا چندین فایل را همزمان باز کنید؟
چند دلیل وجود دارد که ممکن است بخواهید چندین فایل را همزمان در پایتون باز کنید. یکی از رایج ترین سناریوها زمانی است که با یک مجموعه داده بزرگ کار می کنید که در چندین فایل تقسیم شده است. به جای باز کردن، خواندن و بستن هر فایل یک به یک، می توانید با باز کردن همه فایل ها به طور همزمان، خواندن داده ها و سپس بستن فایل ها، فرآیند را ساده کنید.
این نه تنها کد شما را کارآمدتر میکند، بلکه پاکتر و راحتتر خوانده میشود. به علاوه، شما را از سردرد بالقوه ردیابی فایلهایی که قبلاً باز/بستهاید و کدامها را نکردهاید نجات میدهد.
صبر کن! در حالی که باز کردن چندین فایل به طور همزمان می تواند کد شما را کارآمدتر کند، همچنین می تواند حافظه بیشتری را مصرف کند. پس فقط هنگام کار با فایل های زیاد یا فایل های بسیار بزرگ مراقب باشید.
باز کردن چندین فایل
روش اصلی باز کردن چندین فایل در پایتون شامل استفاده از with open()
عملکرد در ترکیب با داخلی پایتون zip()
تابع. در اینجا نحوه انجام این کار آمده است:
with open('file1.txt', 'r') as file1, open('file2.txt', 'r') as file2:
for line1, line2 in zip(file1, file2):
print(line1.strip(), line2.strip())
در این کد، دو فایل “file1.txt” و “file2.txt” را برای خواندن باز می کنیم. این with open()
تابع به ما کمک می کند مطمئن شویم که فایل ها پس از اینکه دیگر مورد نیاز نیستند به درستی بسته شده اند. ما استفاده می کنیم zip()
عملکرد خواندن خطوط از هر دو فایل به طور همزمان، که خوب است اگر فایل ها به نحوی مرتبط هستند (مثلاً اگر یک فایل حاوی سؤال و دیگری حاوی پاسخ باشد).
خروجی این کد خطوطی از «file1.txt» و «file2.txt» خواهد بود که در کنار هم چاپ می شوند.
این فقط یک روش اساسی برای باز کردن چندین فایل در پایتون است. راههای دیگری برای انجام این کار وجود دارد که ممکن است برای مورد خاص شما مناسبتر باشد، مانند استفاده از درک فهرست یا باز کردن فایلها در یک حلقه.
نکته ای که باید به آن اشاره کرد این است که از پایتون 3.10، اکنون می توانید چندین مورد را گروه بندی کنید open
در پرانتز و در چند خط فراخوانی می کند که ممکن است به خوانایی کمک کند:
with (
open('file1.txt', 'r') as file1,
open('file2.txt', 'r') as file2
):
for line1, line2 in zip(file1, file2):
print(line1.strip(), line2.strip())
استفاده از “with open” در یک حلقه
راه دیگر برای باز کردن چندین فایل این است که فقط از یک حلقه استفاده کنید و هر فایل را یکی یکی باز کنید تا هیچ دو فایلی به طور همزمان باز نشوند. اگر با فایل های بسیار حجیم کار می کنید و به دلیل محدودیت حافظه نمی توانید چندین فایل را باز کنید، این می تواند مفید باشد.
filenames = ('file1.txt', 'file2.txt', 'file3.txt')
for file in filenames:
with open(file, 'r') as f:
print(f.read())
در اینجا، فهرست نام فایلها را مرور میکنیم. برای هر یک از آنها استفاده می کنیم with open
برای باز کردن فایل و اختصاص آن به متغیر f
. سپس محتویات فایل را چاپ می کنیم. از وقتی که with
بلوک خارج می شود، فایل به طور خودکار بسته می شود.
استفاده از لیست درک برای باز کردن چندین فایل
درک لیست یک ویژگی محبوب در پایتون است که به شما امکان می دهد لیست ها را به روشی بسیار خوانا و فشرده ایجاد کنید. می توان از آن برای باز کردن چندین فایل در یک خط کد استفاده کرد. توجه داشته باشید که این روش انجام می دهد نه استفاده کنید with
، بنابراین باید فایل ها را به صورت دستی ببندید و خطاها را مدیریت کنید، اما همچنان ممکن است در برخی موارد مفید باشد.
filenames = ('file1.txt', 'file2.txt', 'file3.txt')
files = (open(file) for file in filenames)
در این مثال، ما لیستی از نام فایل ها را داریم. ما از درک لیست برای تکرار روی لیست، باز کردن هر فایل و ذخیره شی فایل به دست آمده در یک لیست جدید استفاده می کنیم. files
.
رسیدگی به خطاها و مشکلات هنگام باز کردن چندین فایل با استفاده از with
هنگام کار با فایلها در هر زبان برنامهنویسی، معمولاً مجبور به رسیدگی به خطاها میشوید، زیرا ممکن است بسیاری از آنها اشتباه پیش بروند. پایتون with
کلمه کلیدی و try/except
بلوک ها می توانند برای مدیریت بهتر این خطاها با هم کار کنند
بیایید به یک مثال نگاه کنیم:
filenames = ("file1.txt", "file2.txt", "nonexistent.txt", "file3.txt")
for name in filenames:
try:
with open(name, 'r') as f:
print(f.read())
except FileNotFoundError:
print(f"{name} not found.")
except PermissionError:
print(f"You don't have permission to read {name}.")
در این مثال سعی می کنیم چهار فایل را با یک حلقه باز کنیم. ما عملیات باز کردن فایل را در داخل a قرار داده ایم with
بلوکی که خود در یک محصور است try/except
مسدود کردن. به این ترتیب، اگر فایل وجود نداشته باشد، a FileNotFoundError
پیدا می شود و یک پیام خطای سفارشی چاپ می شود. ما از این روش برای رسیدگی به سناریوهای خاص و اجازه دادن استفاده می کنیم with
اگر پرونده باز شده باشد، بسته شدن آن را انجام دهید.
خروجی:
$ python open_multiple_files_with_with.py
...contents of file1.txt...
...contents of file2.txt...
nonexistent.txt not found.
...contents of file3.txt...
نتیجه
در این مقاله، راههای مختلفی برای باز کردن چندین فایل با استفاده از آن را بررسی کردهایم with open
در پایتون ما با روش اصلی باز کردن چندین فایل شروع کردیم و سپس به سمت تکنیکهای کمی پیشرفتهتر مانند استفاده از حلقهها و درک لیست رفتیم. همچنین به طور خلاصه به نحوه رسیدگی به خطاها و مشکلات هنگام باز کردن چندین فایل پرداختیم.
منتشر شده در 1402-12-27 06:01:04