Jannah Theme License is not validated, Go to the theme options page to validate the license, You need a single license for each domain name.

أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة

7 طرق مفيدة للتعامل مع ملف نصي باستخدام Python

التعامل مع الملفات النصية من أكثر المهام التي يحتاجها مستخدمو Python سواء كانوا مبتدئين أو محترفين. قراءة البيانات، تعديلها، معالجتها، ثم حفظها مجددًا يمكن تنفيذه بسطرين فقط عند استخدام الأدوات الصحيحة داخل اللغة. قوة Python تظهر بوضوح في بساطة التعامل مع الملفات، حيث توفر دوال مباشرة للوصول إلى النصوص، تنظيمها، وتحويلها إلى شكل يناسب أي مشروع برمجي صغير أو كبير. فهم الأساسيات يمكّن المطور من إنجاز المهام بسرعة ودون تعقيد، خاصة عند العمل مع سجلات، إعدادات، أو بيانات تم جمعها من مصادر مختلفة.

illustration-of-a-laptop-displaying-python-code-with-floating-code-windows-and-the-python-logo-on-a-blue-patterned-background أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة

هل تعمل مع الكثير من الملفات يوميًا؟ كبيرة وصغيرة؟ فوضوية ومنظمة؟ مهما كانت مهمتك، فإن بايثون يجعل التعامل مع الملفات غاية في السهولة. بقليل من البرمجة، يمكنك توفير ساعات من العمل والراحة. لنستكشف سحر بايثون في التعامل مع الملفات.

Table of Contents

قراءة ملف نصي

عند العمل مع السجلات، أو ملفات التكوين، أو مجموعات البيانات، أو أي تنسيق نصي، فإن أول مهارة تحتاجها هي القدرة على قراءة ملف بكفاءة. تُسهّل بايثون هذه العملية تمامًا باستخدام دالة open() المدمجة وبعض أساليب القراءة المفيدة. في حين أن دالة open() هي البوابة القياسية، فإن الطريقة “البايثونية” للتعامل مع الملفات هي استخدام مدير السياق (عبارة with).

with open("server.log", "r") as f:
    content = f.read()
    print(content)
an-example-of-reading-file-content-using-python-code أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة

هذه هي طريقة “أعطني كل شيء”. إذا كان الملف صغيرًا أو متوسط ​​الحجم، فهو مثالي. يُحمّل بايثون الملف بأكمله إلى الذاكرة كسلسلة نصية واحدة. استخدام with يضمن إغلاق بايثون للملف نيابةً عنك. يتولى بايثون إعداد وحذف موارد الملف.

إذا كنت ترغب في قراءة كل سطر على حدة، فاستخدم هذه الطريقة:

with open("users.txt", "r") as f:
    for line in f:
        print(line.strip())

يمكنك أيضًا الاستفادة من وظائف readline() و readlines() في Python.

# Read the first line
with open("data.txt", "r") as f:
    first_line = f.readline()

# Read all lines into a list
with open("data.txt", "r") as f:
    lines = f.readlines()
using-readline-and-readlines-functions-in-python-to-read-a-file-s-content أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة

دالة readline() رائعة عندما تحتاج فقط إلى عدد محدد من الأسطر. هذا مفيد إذا كنت بحاجة إلى الوصول إلى أسطر محددة حسب الفهرس، على سبيل المثال، lines[5]. تُقدم لك دالة readlines() كل سطر كقائمة، وهو أمر مناسب للفهرسة والتقطيع والتحويلات السريعة.

الكتابة إلى ملفات نصية

في النهاية، يحتاج كل مطور بايثون إلى إعادة إدخال شيء ما إلى ملف. ربما كنت تُنشئ تقارير، أو تحفظ بيانات مُنظّفة، أو تكتب سجلات من نصك البرمجي. الخبر السار هو أن الكتابة إلى الملفات في بايثون سهلة مثل قراءتها. لكتابة محتوى جديد إلى ملف:

اقرأ أيضا:  كيفية مزامنة الترجمات في VLC
report = "Daily summary: All systems operational.\n"

with open("summary.txt", "w") as f:
    f.write(report)
writing-to-a-file-using-python-s-write-function أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة
يؤدي فتح ملف باستخدام “w” إلى إنشائه إذا لم يكن موجودًا، ويستبدله تمامًا إذا كان موجودًا. يُعد هذا مثاليًا عند إنشاء مُخرجات جديدة، مثل تصدير مجموعة بيانات مُعالجة أو إعادة إنشاء تقرير يوميًا. إذا كنت ترغب في إضافة بيانات إلى ملف، فاستخدم الخيار “a”.
log_entry = "User logged in at 14:32\n"

with open("activity.log", "a") as f:
    f.write(log_entry)
appending-content-to-an-existing-file-using-python-s-write-function أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة
استخدم هذه الدالة عندما تريد الاحتفاظ بما هو موجود في ملف وإضافة أسطر جديدة إلى نهايته. عند كتابة أسطر متعددة، تكون دالة writelines() مفيدة.
lines = [
    "apple\n",
    "banana\n",
    "cherry\n"
]

with open("fruits.txt", "w") as f:
    f.writelines(lines)
writing-multiple-strings-to-a-file-using-python-s-writelines-function أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة
هذا مفيد إذا كانت لديك قائمة بايثون لمحتوى من نوع السلسلة النصية. تذكر فقط أنها لا تضيف أحرف سطر جديد، لذا عليك تضمينها في السلسلة النصية.

البحث داخل الملفات النصية

بعد أن تتقن قراءة الملفات وكتابتها، فإن الخطوة التالية هي العثور على ما تبحث عنه داخلها. ربما تبحث في السجلات عن رسائل خطأ أو تستخرج أسطرًا مطابقة لنمط معين. يوفر لك بايثون طرقًا متعددة للبحث داخل الملفات النصية. لنلقِ نظرة على مثال بسيط باستخدام الحلقات التكرارية.
target = "ERROR"

with open("server.log", "r") as f:
    for line in f:
        if target in line:
            print("Found error:", line.strip())
searching-for-text-in-a-file-using-a-for-loop-in-python أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة
هذه الطريقة فعّالة جدًا إذا كنت تبحث فقط عن سلسلة فرعية أساسية. لتصفية أكثر تقدمًا، يمكنك استخدام أنماط التعبيرات العادية لأتمتتها. يمكنك استخدام وحدة re في بايثون.
import re

pattern = re.compile(r"User\s+\d+\s+logged\s+in")

with open("activity.log", "r") as f:
    for line in f:
        if pattern.search(line):
            print("Match:", line.strip())

searching-for-text-in-a-file-using-regex-patterns-in-python أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة

فكّر في سيناريوهات تحتاج فيها إلى اكتشاف المعرفات، والطوابع الزمنية، والتنسيقات، أو أي شيء ذي بنية. في هذا المثال، نجد أسطرًا سجّل فيها مستخدم دخوله بمعرف رقمي.

استبدال نص في ملفات

البحث رائع. ولكن عاجلاً أم آجلاً، ستحتاج إلى تغيير محتوى الملف. تُسهّل بايثون استبدال النص بشكل مدهش بمجرد معرفة الأنماط الأساسية. لمهام البحث والاستبدال الأساسية، يمكنك استخدام عمليات بايثون النصية.

old = "ERROR"
new = "INFO"

with open("server.log", "r") as f:
    content = f.read()

updated = content.replace(old, new)

with open("server.log", "w") as f:
    f.write(updated)
simple-text-replacement-in-a-file-using-python-s-string-operations أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة
هذا النمط مثالي عند الرغبة في استبدال جميع تكرارات كلمة أو عبارة معينة. إذا لم يكن هذا كافيًا لحالتك، فمرة أخرى، لديك تعبير عادي لمهام الاستبدال المتقدمة. إليك مثال بسيط:
import re

pattern = r"\bUser\s+(\d+)\b"
replacement = r"Account \1"

with open("activity.log", "r") as f:
    content = f.read()

updated = re.sub(pattern, replacement, content)

with open("activity.log", "w") as f:
    f.write(updated)
replacing-text-in-a-file-using-python-regex أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة
هنا، يمنحك التعبير العادي القدرة على استبدال النص المنظم، وليس فقط سلسلة حرفية.
عدّ الكلمات والأسطر والحروف
لنفترض أن لديك ملفًا نصيًا، وتحتاج إلى بعض المقاييس الأساسية، مثل عدد الأسطر والكلمات وعدد مرات ظهور الكلمة. يمكن أن تكون هذه المعلومات مفيدة لتحليل النصوص والتقارير ومعالجة البيانات. تُسهّل بايثون هذا الأمر. يمكنك استخدام الحلقات للعدّ.

line_count = 0
char_count = 0

with open(“notes.txt”, “r”) as f:
for line in f:
line_count += 1
char_count += len(line)

اقرأ أيضا:  كيفية التحقق من مواقع الويب التي يمكنها الوصول إلى موقعك في Mozilla Firefox

print(“Lines:”, line_count)
print(“Characters:”, char_count)

هذه الحلقة البسيطة تعمل بشكل جيد حتى مع الملفات الكبيرة. اقرأ سطرًا واحدًا في كل مرة، ثم عدّه، وتتبع إجمالي الأحرف على طوله. لعدّ الكلمات:

word_count = 0

with open("notes.txt", "r") as f:
    for line in f:
        words = line.split()
        word_count += len(words)

print("Words:", word_count)

يؤدي تقسيم كل سطر باستخدام .split() إلى توفير قائمة من الكلمات، وهو أمر مثالي عند القيام بقياسات بسيطة تعتمد على الكلمات.

لتحليل الكلمات بشكل أكثر تقدمًا، يمكنك الاستفادة من وحدة collections ، مثل هذا:

from collections import Counter

counter = Counter()

with open("notes.txt", "r") as f:
    for line in f:
        counter.update(line.split())

print(counter.most_common(5))

counting-the-lines-characters-and-words-in-a-file-using-python أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة

إذا كنت بحاجة لمعرفة الكلمات الأكثر شيوعًا، فإن أداة “العداد” مفيدة للغاية. فهي تحسب العناصر نيابةً عنك، ويمكنها حتى إخبارك بأكثر الكلمات شيوعًا (N) باستخدام دالة .most_common().

تقسيم الملفات ودمجها

قد تصبح ملفات النصوص ضخمة. تخيل العمل مع مجموعات بيانات تحتوي على ملايين الصفوف، أو عمليات تصدير ضخمة جدًا يصعب التعامل معها دفعة واحدة. أحيانًا تحتاج إلى تقسيم ملف إلى أجزاء أصغر، وأحيانًا أخرى تحتاج إلى دمج ملفات متعددة في ناتج واحد واضح وموحد. تتعامل بايثون مع كلتا المهمتين بسهولة.

إحدى طرق تقسيم ملف هي أخذ عدد ثابت من الأسطر وكتابتها في ملفات جديدة. إليك الطريقة:

chunk_size = 10
file_number = 1
current_lines = []

with open("bigdata.txt", "r") as f:
    for i, line in enumerate(f, start=1):
        current_lines.append(line)

        if i % chunk_size == 0:
            output_name = f"chunk_{file_number}.txt"
            with open(output_name, "w") as out:
                out.writelines(current_lines)
            current_lines = []
            file_number += 1

# write any remaining lines
if current_lines:
    output_name = f"chunk_{file_number}.txt"
    with open(output_name, "w") as out:
        out.writelines(current_lines)

لدمج ملفات متعددة في وحدة واحدة، تعتبر وحدة glob الخاصة بـ Python مفيدة.

import glob

with open("merged_output.txt", "w") as outfile:
    for filename in glob.glob("logs/log*"):
        with open(filename, "r") as infile:
            outfile.write(infile.read())

هنا، يجمع glob جميع الملفات التي تبدأ بـ log في مجلد logs/، ويمكنك ببساطة إضافة محتوياتها إلى ملف واحد. يُعد هذا مثاليًا عند التعامل مع ملفات السجلات اليومية، أو تصدير البيانات الجزئية، أو أي مجلد مليء بالملفات المرتبطة ببعضها.

اقرأ أيضا:  كيفية إنشاء المهام المتكررة في Wunderlist

بمجرد دمج أدواتك، يمكنك أتمتة جميع أنواع المهام الروتينية. على سبيل المثال، دمج السجلات الأسبوعية في سجل شهري، وتقسيم ملفات الإدخال الكبيرة قبل إدخالها في برنامج نصي، وغيرها.

معالجة الأخطاء وعمليات الملفات الآمنة
عند العمل مع الملفات في الواقع، لا تسير الأمور دائمًا كما هو مخطط لها. قد تفشل عمليات الملفات لعدة أسباب. قد لا يكون الملف موجودًا، أو قد لا يملك برنامجك الإذن لقراءته أو الكتابة إليه. إذا تعطل البرنامج النصي في منتصف العملية، فأنت تُخاطر بإتلاف البيانات أو ترك ملفات غير مكتوبة بالكامل.

لإدخال/إخراج ملفات أكثر أمانًا، يُنصح باستخدام كتلة try/except في بايثون لمعالجة أخطاء بايثون.

filename = "config.txt"

try:
    with open(filename, "r") as f:
        data = f.read()
        print("File loaded successfully.")
except FileNotFoundError:
    print("File not found:", filename)
except PermissionError:
    print("You don’t have permission to read this file.")
except Exception as e:
    print("Unexpected error:", e)

merging-multiple-files-into-a-single-file-using-python أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة

يتيح لك هذا اكتشاف المشاكل المتوقعة، مثل الملفات المفقودة أو مشاكل الأذونات. من المشاكل الشائعة الأخرى التي قد تواجهها الترميز. لذا، تأكد من التعامل معها عندما لا تكون متأكدًا من نوع الترميز الذي قد يستخدمه الملف.

try:
    with open("encoding.txt", "r", encoding="utf-8") as f:
        content = f.read()
        print("File loaded successfully.")
except UnicodeDecodeError:
    print("File encoding is not UTF-8. Trying fallback…")
    with open("encoding.txt", "r", encoding="latin-1") as f:
        content = f.read()
        print("Fallback load succeeded:")
        print(content)
تعمل معالجة الترميز على منع الأعطال عند قراءة الملفات من بيئات مختلطة.
يغطي هذا بعضًا من أكثر مهام الملفات شيوعًا والتي يمكنك إنجازها، بل وأتمتتها، باستخدام بايثون. إذا كنت مهتمًا بمعرفة المزيد عن بايثون وميزاتها المتنوعة، فجرب الاطلاع على وحدة os أو استكشاف دالة open().
catching-a-unicode-decode-error-while-reading-a-file-using-python أسهل الطرق للتعامل مع الملفات النصية باستخدام Python خطوة بخطوة

إتقان التعامل مع الملفات النصية يمنح مطوري Python قدرة أكبر على إدارة البيانات وتنظيمها داخل مشاريعهم. الأدوات الأساسية للغة كافية لإنجاز أغلب العمليات دون الحاجة إلى مكتبات خارجية، ومع الممارسة يصبح تنفيذ هذه المهام أسرع وأكثر سهولة. فهم هذه الأساليب يعد خطوة مهمة لكل من يرغب في تطوير مهاراته البرمجية وتوسيع قدرته على بناء مشاريع أكثر احترافية.

زر الذهاب إلى الأعلى