আমি perl -c programfile
পার্ল প্রোগ্রামের সিনট্যাক্স পরীক্ষা করতে ব্যবহার করতাম এবং তারপরে এটি কার্যকর না করে প্রস্থান করতাম। পাইথন স্ক্রিপ্টের জন্য এটি করার সমতুল উপায় আছে কি?
আমি perl -c programfile
পার্ল প্রোগ্রামের সিনট্যাক্স পরীক্ষা করতে ব্যবহার করতাম এবং তারপরে এটি কার্যকর না করে প্রস্থান করতাম। পাইথন স্ক্রিপ্টের জন্য এটি করার সমতুল উপায় আছে কি?
উত্তর:
আপনি এটি সংকলন করে বাক্য গঠন পরীক্ষা করতে পারেন:
python -m py_compile script.py
python -m compileall
ডিরেক্টরিগুলি পুনরাবৃত্তভাবে করতে পারে এবং একটি আরও ভাল কমান্ড লাইন ইন্টারফেস রয়েছে।
-m py_compile
উপস্থিত থাকি, আমি এটি খুঁজে পেলাম যে .pyc ফাইলটি সৃষ্টি -B
বা PYTHONDONTWRITEBYTECODE
দমন করে না ।
import sys
filename = sys.argv[1]
source = open(filename, 'r').read() + '\n'
compile(source, filename, 'exec')
এটি চেকার.পি হিসাবে সংরক্ষণ করুন এবং চালান 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)
সম্ভবত দরকারী অনলাইন চেকার পিইপি 8: http://pep8online.com/
পাইফ্লেকস আপনি যা চান তা করেন, এটি কেবল বাক্য গঠন পরীক্ষা করে। ডক্স থেকে:
পাইফ্লেকস একটি সাধারণ প্রতিশ্রুতি দেয়: এটি কখনও স্টাইল সম্পর্কে অভিযোগ করবে না এবং এটি মিথ্যা ইতিবাচকতা কখনই নির্গত করতে খুব চেষ্টা করবে না।
পাইফ্লেকস পাইলেট বা পাইচেকারের চেয়েও দ্রুত is এটি মূলত কারণ পাইফ্লেকগুলি পৃথকভাবে প্রতিটি ফাইলের সিনট্যাক্স ট্রি পরীক্ষা করে।
ইনস্টল এবং ব্যবহার করতে:
$ pip install pyflakes
$ pyflakes yourPyFile.py
কোনও কারণে (আমি একজন পাই নবাগত ...) - এম কলটি কার্যকর হয়নি ...
সুতরাং এখানে একটি ব্যাশ মোড়কের কাজ ...
# ---------------------------------------------------------
# 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
, তবে সমস্ত কোড অবশ্যই ফাংশনে থাকতে হবে। যা যাইহোক ভাল অনুশীলন। এমনকি আমি এটি শেল স্ক্রিপ্টগুলির জন্যও গ্রহণ করেছি। এখান থেকে এটি ইউনিট পরীক্ষার একটি ছোট পদক্ষেপ।