जवाबों:
आप इसे संकलित करके वाक्यविन्यास की जाँच कर सकते हैं:
python -m py_compile script.py
python -m compileall
पुनरावर्ती निर्देशिका भी कर सकते हैं और एक बेहतर कमांड लाइन इंटरफ़ेस है।
-m py_compile
मौजूद है, मुझे लगता है कि न तो खोजने कर रहा हूँ -B
और न ही PYTHONDONTWRITEBYTECODE
दबा के निर्माण .pyc फ़ाइल।
import sys
filename = sys.argv[1]
source = open(filename, 'r').read() + '\n'
compile(source, filename, 'exec')
इसे checker.py के रूप में सहेजें और चलाएँ python checker.py yourpyfile.py
।
यहाँ ast
मॉड्यूल का उपयोग कर एक और समाधान है :
python -c "import ast; ast.parse(open('programfile').read())"
इसे पायथन लिपि के भीतर से सफाई से करने के लिए:
import ast, traceback
filename = 'programfile'
with open(filename) as f:
source = f.read()
valid = True
try:
ast.parse(source)
except SyntaxError:
valid = False
traceback.print_exc() # Remove to silence any errros
print(valid)
शायद उपयोगी ऑनलाइन चेकर PEP8: http://pep8online.com/
Pyflakes क्या आप पूछते हैं, यह सिर्फ वाक्यविन्यास की जाँच करता है। डॉक्स से:
Pyflakes एक सरल वादा करता है: यह शैली के बारे में कभी भी शिकायत नहीं करेगा, और यह बहुत कोशिश करेगा कि झूठी सकारात्मक चीजों का कभी भी उत्सर्जन न करें।
पायफ्लेक्स पाइलिंट या पाइसेचर से भी तेज है। यह बड़े पैमाने पर है क्योंकि Pyflakes केवल व्यक्तिगत रूप से प्रत्येक फ़ाइल के वाक्यविन्यास वृक्ष की जांच करता है।
स्थापित करने और उपयोग करने के लिए:
$ pip install pyflakes
$ pyflakes yourPyFile.py
किसी कारण के लिए (मैं एक py नौसिखिया हूँ ...) -m कॉल काम नहीं किया ...
तो यहाँ एक बकवास आवरण है ...
# ---------------------------------------------------------
# check the python synax for all the *.py files under the
# <<product_version_dir/sfw/python
# ---------------------------------------------------------
doCheckPythonSyntax(){
doLog "DEBUG START doCheckPythonSyntax"
test -z "$sleep_interval" || sleep "$sleep_interval"
cd $product_version_dir/sfw/python
# python3 -m compileall "$product_version_dir/sfw/python"
# foreach *.py file ...
while read -r f ; do \
py_name_ext=$(basename $f)
py_name=${py_name_ext%.*}
doLog "python3 -c \"import $py_name\""
# doLog "python3 -m py_compile $f"
python3 -c "import $py_name"
# python3 -m py_compile "$f"
test $! -ne 0 && sleep 5
done < <(find "$product_version_dir/sfw/python" -type f -name "*.py")
doLog "DEBUG STOP doCheckPythonSyntax"
}
# eof func doCheckPythonSyntax
import script
, लेकिन सभी कोड कार्यों में होना चाहिए। जो वैसे भी अच्छा अभ्यास है। मैंने इसे शेल स्क्रिप्ट के लिए भी अपनाया है। यहाँ से यह इकाई परीक्षण के लिए एक छोटा कदम है।