از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نوشتن فایل با استفاده از پایتون
سرفصلهای مطلب
معرفی
همانطور که در مقاله قبلی که به خواندن داده ها از فایل ها می پردازد، اشاره شد، مدیریت فایل ها دانش ضروری هر برنامه نویس حرفه ای و علاقه مند پایتون است. این ویژگی بخش اصلی زبان پایتون است و برای انجام صحیح آن نیازی به بارگذاری ماژول اضافی نیست.
در این مقاله نگاهی به روش نوشتن داده ها در یک فایل به صورت خط به خط، به عنوان لیستی از خطوط و اضافه کردن داده ها در انتهای یک فایل خواهیم داشت.
اصول نوشتن فایل در پایتون
سه تابع رایج برای کار با فایل ها در پایتون وجود دارد:
open()
برای باز کردن یک فایل،seek()
برای تنظیم موقعیت فعلی فایل در افست داده شده،close()
برای بستن فایل پس از آن
توجه داشته باشید: open()
یک تابع داخلی پایتون است که یک دسته فایل را برمی گرداند که نشان دهنده a است شی فایل مورد استفاده قرار گیرد برای خواندن، نوشتن یا الحاق به فایل دسترسی داشته باشید.
نوشتن در یک فایل به چند تصمیم نیاز دارد – نام فایلی که در آن داده ها ذخیره می شود و حالت دسترسی به فایل. دو حالت موجود است، نوشتن در یک فایل جدید (و بازنویسی هر داده موجود) و افزودن داده در انتهای فایلی که از قبل وجود دارد. اختصارات مطابق می باشد “w”، و “آ”و باید قبل از باز کردن فایل مشخص شود.
توجه داشته باشید: علاوه بر ذکر پرچم های “w” و “a”، یکی دیگر قدرتمندتر وجود دارد – the “w+” flag، که فایل را برای خواندن و نوشتن باز می کند.
نوشتن یک خط در یک فایل
این مثال اول تقریباً شبیه نوشتن روی فایلهای با زبانهای برنامهنویسی محبوب C و C++ است. این process بسیار سرراست است ابتدا فایل را با استفاده از داخلی باز می کنیم open()
تابع نوشتن، یک خط متن را با استفاده از write()
روش، و سپس فایل را با استفاده از close()
روش. به خاطر داشته باشید که با توجه به راهی که ما در را باز کردیم helloworld.txt
اگر هنوز وجود نداشته باشد، یا ایجاد خواهد شد، یا ایجاد خواهد شد به صورت کامل رونویسی شده:
filehandle = open('helloworld.txt', 'w')
filehandle.write('Hello, world!\n')
filehandle.close()
این کل process را می توان با استفاده از with
بیانیه:
with open('helloworld.txt', 'w') as filehandle:
filehandle.write('Hello, world!\n')
همانطور که قبلاً گفته شد، به خاطر داشته باشید که باز کردن helloworld.txt
اگر فایلی هنوز وجود نداشته باشد یا بهطور کامل بازنویسی میشود.
نوشتن فهرستی از خطوط در یک فایل
در واقعیت، یک فایل فقط از یک خط تشکیل نمی شود، بلکه داده های بسیار بیشتری را شامل می شود. بنابراین، محتویات فایل در لیستی ذخیره می شود که نشان دهنده یک بافر فایل است. برای نوشتن کل بافر فایل از writelines()
روش:
filehandle = open("helloworld.txt", "w")
filebuffer = ("a first line of text", "a second line of text", "a third line")
filehandle.writelines(filebuffer)
filehandle.close()
اجرای برنامه قبلی پایتون و سپس استفاده از cat
دستور ما می توانیم آن فایل را ببینیم helloworld.txt
دارای محتوای زیر است:
$ cat helloworld.txt
a first line of texta second line of texta third line
این اتفاق می افتد زیرا writelines()
روش به طور خودکار هیچ جداکننده خط اضافه نمی کند هنگام نوشتن داده ها، اگرچه به صورت شهودی، باید خطوط جداگانه بنویسد.
این را می توان به راحتی با اضافه کردن a برطرف کرد \n
کاراکتر (خط جدید) در انتهای هر خط. علاوه بر این، ما می توانیم حلقه را با استفاده از یک عبارت مولد ساده کنیم:
with open('helloworld.txt', 'w') as filehandle:
filebuffer = ("a line of text", "another line of text", "a third line")
filehandle.writelines(f"{line for line in filebuffer}\n")
حالا فایل خروجی helloworld.txt
دارای محتوای مورد نظر:
$ cat helloworld.txt
a first line of text
a second line of text
a third line
افزودن داده به یک فایل
تاکنون داده ها را در فایل های جدید یا در داده های رونویسی شده در فایل های موجود ذخیره کرده ایم. اما اگر بخواهیم داده ها را به انتهای یک فایل موجود اضافه کنیم چه؟ در این مورد، ما باید فایل موجود را با استفاده از حالت دسترسی متفاوت باز کنیم. ما کد دسترسی را به 'a'
بجای 'w'
:
filehandle = open('helloworld.txt','a')
filehandle.write('\n' + 'Hello, world!\n')
filehandle.close()
مانند قبل، می توانیم کد قبلی را نیز با استفاده از بازنویسی کنیم with
بیانیه:
with open('helloworld.txt', 'a') as filehandle:
filehandle.write(f'\n Hello, world!\n')
با استفاده از همین helloworld.txt
فایل از قبل، اجرای این کد محتوای فایل زیر را تولید می کند:
$ cat helloworld.txt
Hello, world
a second line
and a third line
Hello, world!
نتیجه
نوشتن دادههای متنی ساده روی فایلها، یا اضافه کردن دادهها به فایلهای موجود، به آسانی خواندن از فایلها در پایتون است. به محض اینکه یک فایل پس از نوشتن یا اضافه کردن داده ها بسته می شود، پایتون یک تماس همگام سازی را راه اندازی می کند. در نتیجه، فایل به روز شده بلافاصله روی دیسک نوشته می شود.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-04 16:38:04