Kahibaro
Discord Login Register

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

کار با فایل برای نوشتن و افزودن

در این بخش می‌بینید چطور با پایتون روی فایل‌ها بنویسید و چطور به فایل‌های موجود چیزی اضافه کنید، بدون اینکه کل محتوای قبلی را پاک کنید.

حالت‌های مهم برای نوشتن

در تابع open() حالت (mode) فایل تعیین می‌کند چه کاری انجام می‌دهیم:

در این فصل روی w و a تمرکز می‌کنیم.

نوشتن در فایل با حالت `w`

با حالت w:

مثال ساده:

file = open("note.txt", "w", encoding="utf-8")
file.write("سلام!\n")
file.write("این اولین خط من در فایل است.\n")
file.close()

نکات:

استفاده از `with` برای بستن خودکار فایل

روش امن‌تر و تمیزتر:

with open("note.txt", "w", encoding="utf-8") as f:
    f.write("خط ۱\n")
    f.write("خط ۲\n")
# اینجا فایل به‌طور خودکار بسته شده است

هر چیزی که داخل بلوک with (با تورفتگی) نوشته شود، به همان فایل مربوط است.

افزودن به فایل با حالت `a`

حالت a محتوا را در انتهای فایل موجود اضافه می‌کند:

with open("note.txt", "a", encoding="utf-8") as f:
    f.write("این خط بعداً اضافه شده است.\n")

اگر note.txt قبلاً دو خط داشته باشد، حالا این خط سوم می‌شود.

مثال: لاگ سادهٔ رویدادها

فرض کنید می‌خواهید هر بار برنامه اجرا می‌شود، یک پیام در فایل لاگ ثبت شود:

with open("log.txt", "a", encoding="utf-8") as log:
    log.write("برنامه اجرا شد.\n")

هر بار که این بخش از کد اجرا شود، یک خط جدید به log.txt اضافه می‌شود.

نوشتن چند خط با یک بار `write`

می‌توانید یک رشتهٔ چندخطی بسازید و یک‌جا بنویسید:

text = "خط اول\nخط دوم\nخط سوم\n"
with open("multi.txt", "w", encoding="utf-8") as f:
    f.write(text)

یا از join استفاده کنید:

lines = ["سیب", "پرتقال", "موز"]
with open("fruits.txt", "w", encoding="utf-8") as f:
    f.write("\n".join(lines) + "\n")

در اینجا:

تفاوت عملی `w` و `a`

فرض کنیم فایل data.txt این محتوا را دارد:

:::text
اولین خط قدیمی

استفاده از `w`

with open("data.txt", "w", encoding="utf-8") as f:
    f.write("محتوای جدید\n")

حالا محتوا:

:::text
محتوای جدید

همه‌چیز جایگزین شده است.

استفاده از `a`

with open("data.txt", "a", encoding="utf-8") as f:
    f.write("خط اضافه شده\n")

اگر قبلاً data.txt فقط:

:::text
اولین خط قدیمی

را داشت، حالا می‌شود:

:::text
اولین خط قدیمی
خط اضافه شده

هیچ‌چیز پاک نشد، فقط اضافه شد.

نوشتن با `print` در فایل

می‌توان خروجی print را هم به فایل فرستاد، با استفاده از file=:

with open("out.txt", "w", encoding="utf-8") as f:
    print("سلام دنیا!", file=f)
    print("این خط دوم است.", file=f)

در فایل:

:::text
سلام دنیا!
این خط دوم است.

print خودش در انتهای متن \n اضافه می‌کند، بنابراین لازم نیست آن را دستی بنویسید.

مثال‌ها

مثال ۱: ذخیرهٔ چند نام در فایل

names = ["علی", "مینا", "سارا"]
with open("names.txt", "w", encoding="utf-8") as f:
    for name in names:
        f.write(name + "\n")

فایل names.txt:

:::text
علی
مینا
سارا

مثال ۲: دفترچه یادداشت ساده (افزودن یادداشت)

این مثال فقط بخش نوشتن/افزودن را نشان می‌دهد (ورودی کاربر در فصل ورودی/خروجی توضیح داده شده است):

note = input("یادداشت خود را بنویسید: ")
with open("notes.txt", "a", encoding="utf-8") as f:
    f.write(note + "\n")
print("یادداشت شما ذخیره شد.")

هر بار که برنامه اجرا شود، یک خط جدید به notes.txt اضافه می‌شود.

نکات و اشتباهات رایج

این‌ها ابزارهای اصلی برای نوشتن و افزودن به فایل‌ها هستند؛ در تمرین‌ها و پروژه‌ها مرتب از آن‌ها استفاده خواهید کرد.

Views: 6

Comments

Please login to add a comment.

Don't have an account? Register now!