اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

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

import fileinput

for line in fileinput.input("test.txt", inplace=True):
    print "%d: %s" % (fileinput.filelineno(), line),

شرح ما الذي ستفعله هذه الشيفرة البرمجية:

  •  إنشاء نسخة احتياطية من الملف الأصلي.
  • إعادة توجيه المخرجات القياسية إلى الملف الأصلي داخل الحلقة.
  • تبديل أي تعليمات للطباعة باستخدام print إلى كتابة ما بداخل التعليمة إلى الملف الأصلي.

المصدر

  • 0
نشر

التعديل على الملفات يجب أن يكون دقيقًا. هنا سأعرّف التابع التالي الذي يمكّنك من إنجاز المطلوب:

from tempfile import mkstemp
from shutil import move, copymode
from os import fdopen, remove
# نمرر المسار والسطر المراد استبداله و السطر الجديد
def replace(file_path, pattern, subst):
    # ننشئ ملف مؤقت
    fh, abs_path = mkstemp()
    with fdopen(fh,'w') as new_file:
        with open(file_path) as old_file:
            # نمر على أسطر الملف القديم
            for line in old_file:
                # نكتب في الملف الجديد هذا السطر + استبدال السطر القديم بالجديد عندما نجده
                new_file.write(line.replace(pattern, subst))
    # ننسخ أذونات الملف من الملف القديم إلى الملف الجديد
    copymode(file_path, abs_path)
    # نحذف الملف القديم
    remove(file_path)
    # ننتقل للملف الجديد
    move(abs_path, file_path)

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...