المعروف سابقًا باسم محرر جماعي بيثون
ينفذ محرر جماعي Python لمعالجة الملفات النصية باستخدام رمز Python. يتم عرض (تعديل) (S) على stdout كإخراج Diff. يمكن للمرء بعد ذلك تعديل الملف (الملفات) الهدف في مكانه مع خيار -W/-الكتابة. هذا يشبه إلى حد كبير أداة 2to3 التي تشحن مع Python 3.
تحذير : كلمة تحذير حول استخدام eval() |
هذه الأداة مفيدة بقدر ما تسير الأمور ولكنها تعتمد على وظيفة Python انظر مقالة Ned Batchelder للحصول على مناقشة شاملة للمخاطر المرتبطة بـ |
ربما ستحتاج إلى معرفة أساسيات وحدة Python RE (تعبيرات منتظمة).
الاستخدام: massedit.py [-h] [-v] [-w] [-v] [-e expressions] [-f functions]
[-X Executables] [-S Start_Dirs] [-M MAX_DEPTH] [-O]
[-g file] [-ترميز الترميز] [-NewLine NewLine]
[نمط الملف [نمط الملف ...]]
محرر جماعي بيثون
الحجج الموضعية:
أنماط اسم الملف التي تشبه قذيفة نمط الملف للمعالجة أو - للقراءة
من stdin.
الحجج الاختيارية:
-H ، -عرض رسالة المساعدة هذه والخروج
-v ، -رقم إصدار برنامج العرض والخروج
-W ، -RITE تعديل الملفات (الملفات) الهدف في المكان. يظهر Diff خلاف ذلك.
-v ، -verbose يزيد من فعل السجل (يمكن تحديد متعددة
مرات)
-تعبيرات ، -تعبيرات التعبير
تم تطبيق تعبيرات Python على الملفات المستهدفة. استخدم
متغير الخط للإشارة إلى الخط الحالي.
وظائف F ، -وظائف الوظائف
وظيفة Python لتطبيق على الملف المستهدف. يأخذ الملف
المحتوى كخطوط إدخال وإنتاجية. حدد الوظيفة
[الوحدة النمطية]:؟ <اسم الوظيفة>.
-X التنفيذيين ، -التنفيذيين القابلة للإزالة
Python قابلة للتنفيذ للتقدم على الملف المستهدف.
-S start_dirs ، -ابدأ start_dirs
دليل (IES) الذي يبحث عن أهداف.
-M MAX_DEPTH ،-MAX_DEPTH
أقصى عمق عند المشي الفرعي.
-O FILE ، -ملف الإخراج
إعادة توجيه الإخراج إلى ملف
-G FILE ، -ملف
قم بإنشاء ملف كعب مناسب لخيار -F
-ترميز تشفير ملفات الإدخال والإخراج
-NewLine NewLine Newline حرف لملفات الإخراج
أمثلة:
# استبدال السلسلة البسيطة (-e). سوف تظهر فرق. لا توجد تغييرات.
massedit.py -e "re.sub ('failif' ، 'Assertfalse' ، line)" *.py
# تعديلات مستوى الملف (-f). الكتابة فوق الملفات الموجودة (-W).
massedit.py -w -f المثبت: Fixit *.py
# سوف يغير كل الاختبار*.py في الدلائل الفرعية من الاختبارات.
massedit.py -e "re.sub ('failif' ، 'AssertFalse' ، line)" -s tests test*.py
# سيقوم بتحويل الطرق الافتراضية (تقريبًا) إلى Mock_Method مناسبة لـ Gmock (انظر https://github.com/google/googletest).
massedit.py -e "re.sub (r ' s*virtual s+([ w: <> ، s &*]+) s+( w+) ( ([^)]*)) s*( w+) g <3> ، ( g <4> ، تجاوز)) ؛ '، السطر) "gmock_test.cpp
إذا تم تثبيت massedit كحزمة (من PYPI على سبيل المثال) ، يمكن للمرء أن يتفاعل معها كأداة سطر الأوامر:
Python -M massedit -e "re.sub ('Assertequals' ، 'Assertequal' ، line)" test.py
أو كمكتبة (خيار سطر الأوامر أعلاه ليتم تمريره كوسائط Kewyord):
>>> استيراد massedit
>>> أسماء الملفات = ['massedit.py']
>>> massedit.edit_files (أسماء الملفات ، ["re.sub ('Jerome' ، 'J.' ، line)"])
أخيرًا ، هناك مجموعة ملائمة massedit.bat للنوافذ المدرجة في التوزيع.
تنزيل massedit.py من http://github.com/elmotec/massedit أو:
تثبيت Python -M Pip Massedit
أجد نفسي أستخدم Massedit في الغالب حتى يتم تعديل المصدر لقواعد التعليمات البرمجية الكبيرة مثل هذا:
قم أولاً بإنشاء وحدة Python fixer.py مع الوظيفة التي ستعالج رمز المصدر الخاص بك. على سبيل المثال ، لإضافة رأس:
def add_header (الخطوط ، file_name):
العائد "// هذا هو رأسي" # سيكون السطر الأول من الملف.
للخط في الأسطر:
خط العائد
massedit.py موقع fixer.py $PYTHONPATH
massedit.py -f المثبت: add_header *.h
يمكنك إضافة -s . خيار لمعالجة جميع ملفات .h بشكل متكرر.
لقد كنت أستخدم تشغيلها وتحقق منها (من أدوات الطاقة UNIX) لسنوات ولم أجد بديلاً جيدًا تحت Windows حتى صادفت وصفة Graham Fawcett Python 437932 على Activestate. لقد ألهمني لكتابة massedit.
تم تجسيد النواة قليلاً ، وهنا نحن. إذا وجدت أنها مفيدة وقام بتعزيزها من فضلك ، لا تنس إرسال تصحيحات. شكرًا!
إذا كنت مهتمًا أكثر بأداة تشبه AWK ، فربما ستجد PYP بديلاً أفضل.
لإعداد الأشياء للتنمية ، الأسهل هو تثبيت تطوير تكوين إضافي:
Python -M Venv Venv . VENV/BIN/تنشيط تثبيت Python -M Pip -e. [تطوير]
الأفضل هو استخدام الالتزام عند أداء الالتزامات.
مرخصة بموجب مدة ترخيص معهد ماساتشوستس للتكنولوجيا. انظر ملف ترخيص الملف المرفق.
انظر changelog.md للحصول على التغييرات في وقت لاحق من 0.69.0
https://github.com/myint https://github.com/tgoodlet https://github.com/alfnet https://github.com/isidroas