পাইথন ২.7++ এর জন্য অভিব্যক্তিক উত্তরটি ব্যবহার করা subprocess.check_output()
সাব-প্রসেসটি চালানোর সময় আপনার যুক্তিগুলির পরিচালনাও নোট করা উচিত, কারণ এটি কিছুটা বিভ্রান্ত হতে পারে ....
আরগস যদি নিজস্ব কোনও আরগস সহ কেবলমাত্র একক কমান্ড হয় (বা আপনার কাছে রয়েছে shell=True
সেট করেছেন), এটি স্ট্রিং হতে পারে। অন্যথায় এটি অবশ্যই একটি তালিকা হতে হবে।
উদাহরণস্বরূপ ... ls
আদেশটি প্রার্থনা করার জন্য , এটি ঠিক আছে:
from subprocess import check_call
check_call('ls')
সুতরাং এটি:
from subprocess import check_call
check_call(['ls',])
তবে, আপনি যদি শেল কমান্ডের কাছে কিছু আরগস দিতে চান তবে আপনি এটি করতে পারবেন না :
from subprocess import check_call
check_call('ls -al')
পরিবর্তে, আপনাকে অবশ্যই এটি তালিকা হিসাবে পাস করতে হবে:
from subprocess import check_call
check_call(['ls', '-al'])
shlex.split()
ফাংশন কখনও কখনও মত শেল সিনট্যাক্স একটি subprocesses তৈরি ... এই মত সামনে মধ্যে একটি স্ট্রিং বিভক্ত করতে উপযোগী হতে পারে:
from subprocess import check_call
import shlex
check_call(shlex.split('ls -al'))
"ntpq -p"
, যা একটি আলাদা অংশ আপনি যা জিজ্ঞাসা করছেন তার চেয়ে সমস্যা