أكثر

كتم تحذيرات المستخدم لبرنامج GRASS-PYTHON

كتم تحذيرات المستخدم لبرنامج GRASS-PYTHON


لقد قمت بإنشاء برنامج يتم تشغيله خارجيًا من GRASS v6.4.1 ، باستخدام python 2.6. تستورد ملف شكل ESRI ، وتقوم بتصدير KML منفصل لكل مضلع في ملف المتجه هذا.

تنتج المضلعات التي تحتوي على جزر رسالة تحذير باستخدام "v.out.ogr" تفيد بأنه تم تخطي الميزات التي لا تحتوي على فئة. بالنظر إلى هذا أبعد من ذلك ، تتم معالجة هذه الميزات "التي تم تخطيها" (الجزر) لاحقًا. لذا يقوم البرنامج بما تم تصميمه من أجله ، لكني أرغب في ذلك حتى لا تتم طباعة رسالة التحذير هذه في الجهاز.

تم ضبط إعداد VERBOSITY على "0" باستخدام:

os.environ ['GRASS_VERBOSE'] = '0' #runs modules بصمت

لكن هذا لا يهتم برسائل التحذير. لقد وجدت أن هناك متغير gisenv يسمى DEBUG ، ويمكن ضبطه على "0" أيضًا بحيث يتم إسكات جميع رسائل التحذير أيضًا. المشكلة هي أنني لا أستطيع الحصول على الصيغة الصحيحة لبرنامج نصي GRASS-python الخاص بي. لقد حاولت:

grass.gisenv () ['set'] = 'DEBUG = 0'

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

هل نجح أي شخص في تعيين مستوى DEBUG على "0" في نص GRASS-Python النصي؟


في لغة C ، يمكن منع رسالة تحذير بواسطة G_suppress_warnings ().

http://grass.osgeo.org/programming7/gis_2error_8c.html#a85673d5f53237ae1c016abcc215871c7

سوف أتحقق من كيفية القيام بذلك في GRASS-Python.


يمكنك قمع معظم الأشياء باستخدام:

grass.run_command ('g.gisenv'، مجموعة = "DEBUG = 0")

لكن DEBUG = 0 لن يمنع التحذيرات. لذلك بالنسبة لإصدار GRASS GIS ، لديك طريقة واحدة فقط ، لتجاهل stderr. سنجعله أكثر أناقة ، ونأمل أن يكون الإصدار 6.4.3 وما بعده.


يدعم GRASS 7 الآن رغبتك (انظر Changeset 51466):

GRASS_VERBOSE = -1 الآن يتجاهل رسائل الخطأ والتحذير

الكود المصدري متاح من مستودع الكود المصدري GRASS GIS SVN أو يوم السبت القادم كلقطة SVN.


شاهد الفيديو: تعلم لغة Python درس 089# - تنصيب ال PyLint لفحص ال Code وكتابة Code سليم