পুনঃনির্দেশ করার জন্য দুটি উপায় রয়েছে। উভয়ই হয় প্রয়োগ হয় 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()খুব পরিষ্কার বলে মনে হচ্ছে। আপনি কি একটি উদ্ধৃতি বা একটি লিঙ্ক সরবরাহ করতে পারেন যাতে একটি উত্তরে কী ফোকাস করতে হয় তা আমরা জানি?