وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

نوشتن فایل با استفاده از پایتون

0 4
زمان لازم برای مطالعه: 3 دقیقه


معرفی

همانطور که در مقاله قبلی که به خواندن داده ها از فایل ها می پردازد، اشاره شد، مدیریت فایل ها دانش ضروری هر برنامه نویس حرفه ای و علاقه مند پایتون است. این ویژگی بخش اصلی زبان پایتون است و برای انجام صحیح آن نیازی به بارگذاری ماژول اضافی نیست.

در این مقاله نگاهی به روش نوشتن داده ها در یک فایل به صورت خط به خط، به عنوان لیستی از خطوط و اضافه کردن داده ها در انتهای یک فایل خواهیم داشت.

اصول نوشتن فایل در پایتون

سه تابع رایج برای کار با فایل ها در پایتون وجود دارد:

  • open() برای باز کردن یک فایل،
  • seek() برای تنظیم موقعیت فعلی فایل در افست داده شده،
  • close() برای بستن فایل پس از آن

توجه داشته باشید: open() یک تابع داخلی پایتون است که یک دسته فایل را برمی گرداند که نشان دهنده a است شی فایل مورد استفاده قرار گیرد برای خواندن، نوشتن یا الحاق به فایل دسترسی داشته باشید.

نوشتن در یک فایل به چند تصمیم نیاز دارد – نام فایلی که در آن داده ها ذخیره می شود و حالت دسترسی به فایل. دو حالت موجود است، نوشتن در یک فایل جدید (و بازنویسی هر داده موجود) و افزودن داده در انتهای فایلی که از قبل وجود دارد. اختصارات مطابق می باشد “w”، و “آ”و باید قبل از باز کردن فایل مشخص شود.

توجه داشته باشید: علاوه بر ذکر پرچم های “w” و “a”، یکی دیگر قدرتمندتر وجود دارد – the “w+” flag، که فایل را برای خواندن و نوشتن باز می کند.

پیشنهاد می‌کنیم بخوانید:  نحوه ارسال چندین آرگومان به تابع map() در پایتون

نوشتن یک خط در یک فایل

این مثال اول تقریباً شبیه نوشتن روی فایل‌های با زبان‌های برنامه‌نویسی محبوب 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() روش به طور خودکار هیچ جداکننده خط اضافه نمی کند هنگام نوشتن داده ها، اگرچه به صورت شهودی، باید خطوط جداگانه بنویسد.

پیشنهاد می‌کنیم بخوانید:  حذف عنصر از یک آرایه در جاوا اسکریپت در جاوا اسکریپت، و درست مانند بسیاری از زبان های دیگر، در برخی مواقع به احتمال زیاد نیاز به حذف یک عنصر از آرایه خواهید داشت. بسته به روی مورد استفاده شما این می تواند به آسانی استفاده از دستورات داخلی ()shift یا pop() باشد، اما فقط در صورتی کار می کند که عنصر در ...

این را می توان به راحتی با اضافه کردن 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

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید