পুনঃনির্দেশ করার জন্য দুটি উপায় রয়েছে। উভয়ই হয় প্রয়োগ হয় subprocess.Popen
বা হয় subprocess.call
।
কীওয়ার্ড আর্গুমেন্টটি সেট করুন shell = True
বা executable = /path/to/the/shell
আপনার কাছে যেমন কমান্ড রয়েছে তেমন নির্দিষ্ট করে দিন।
যেহেতু আপনি কেবলমাত্র একটি ফাইলে আউটপুট পুনর্নির্দেশ করছেন, মূলশব্দটি যুক্তিটি সেট করুন
stdout = an_open_writeable_file_object
যেখানে বস্তুটি output
ফাইলটির দিকে নির্দেশ করে।
subprocess.Popen
তুলনায় আরও সাধারণ subprocess.call
।
Popen
বাধা দেয় না, প্রক্রিয়াটি চলাকালীন আপনার সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেয় বা আপনার পাইথন প্রোগ্রামে অন্য জিনিসগুলি দিয়ে চালিয়ে যায়। Popen
কোনও Popen
বস্তুর ফেরতের কল ।
call
ব্লক করে যদিও এটি Popen
কনস্ট্রাক্টরের মতো একই সমস্ত আর্গুমেন্টকে সমর্থন করে , তাই আপনি এখনও প্রক্রিয়াটির আউটপুট, পরিবেশগত ভেরিয়েবল ইত্যাদি সেট করতে পারেন, আপনার স্ক্রিপ্টটি প্রোগ্রামটি সম্পন্ন হওয়ার জন্য অপেক্ষা করে, এবং call
প্রসেসের প্রস্থান স্থিতির প্রতিনিধিত্ব করে একটি কোড দেয়।
returncode = call(*args, **kwargs)
মূলত আহ্বানের মতোই
returncode = Popen(*args, **kwargs).wait()
call
শুধুমাত্র একটি সুবিধা ফাংশন। সিপিথনে এটি প্রয়োগ হচ্ছে সাবপ্রসেসে.পি :
def call(*popenargs, timeout=None, **kwargs):
"""Run command with arguments. Wait for command to complete or
timeout, then return the returncode attribute.
The arguments are the same as for the Popen constructor. Example:
retcode = call(["ls", "-l"])
"""
with Popen(*popenargs, **kwargs) as p:
try:
return p.wait(timeout=timeout)
except:
p.kill()
p.wait()
raise
আপনি দেখতে পাচ্ছেন, এটি চারপাশে একটি পাতলা মোড়ক Popen
।
call()
খুব পরিষ্কার বলে মনে হচ্ছে। আপনি কি একটি উদ্ধৃতি বা একটি লিঙ্ক সরবরাহ করতে পারেন যাতে একটি উত্তরে কী ফোকাস করতে হয় তা আমরা জানি?