TheProgrammer نشر 5 نوفمبر 2015 أرسل تقرير نشر 5 نوفمبر 2015 أريد أن أقوم بحلقة تكرار على كامل محتوى ملف نصي ومن ثم أقوم بالبحث والاستبدال في أسطر معينة ومن ثم كتابة النتيجة على الملف مباشرة، فما هي أفضل طريقة لفعل ذلك في بايثون؟ اقتباس
0 هشام رزق الله نشر 5 نوفمبر 2015 أرسل تقرير نشر 5 نوفمبر 2015 أسهل طريقة لفعل ذلك هي عن طريق استخدام وحدة fileinput، فعلى سبيل المثال هذه الشيفرة البرمجية لإضافة رقم كل سطر في الملف:import fileinput for line in fileinput.input("test.txt", inplace=True): print "%d: %s" % (fileinput.filelineno(), line),شرح ما الذي ستفعله هذه الشيفرة البرمجية: إنشاء نسخة احتياطية من الملف الأصلي.إعادة توجيه المخرجات القياسية إلى الملف الأصلي داخل الحلقة.تبديل أي تعليمات للطباعة باستخدام print إلى كتابة ما بداخل التعليمة إلى الملف الأصلي.المصدر اقتباس
0 Ali Haidar Ahmad نشر 2 أبريل 2022 أرسل تقرير نشر 2 أبريل 2022 التعديل على الملفات يجب أن يكون دقيقًا. هنا سأعرّف التابع التالي الذي يمكّنك من إنجاز المطلوب: 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) اقتباس
السؤال
TheProgrammer
أريد أن أقوم بحلقة تكرار على كامل محتوى ملف نصي ومن ثم أقوم بالبحث والاستبدال في أسطر معينة ومن ثم كتابة النتيجة على الملف مباشرة، فما هي أفضل طريقة لفعل ذلك في بايثون؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.