การเปลี่ยนเส้นทางทำได้สองวิธี ทั้งนำไปใช้อย่างใดอย่างหนึ่งหรือsubprocess.Popensubprocess.call
ตั้งค่าอาร์กิวเมนต์คำหลักshell = Trueหรือexecutable = /path/to/the/shellและระบุคำสั่งเช่นเดียวกับที่คุณมี
เนื่องจากคุณเพิ่งเปลี่ยนเส้นทางไปยังไฟล์ให้ตั้งค่าอาร์กิวเมนต์คำหลัก
stdout = an_open_writeable_file_object
เมื่อวัตถุชี้ไปที่outputไฟล์
subprocess.Popensubprocess.callทั่วไปมากกว่า
Popenไม่ปิดกั้นช่วยให้คุณสามารถโต้ตอบกับกระบวนการในขณะที่ทำงานหรือดำเนินการกับสิ่งอื่นในโปรแกรม Python ของคุณ การเรียกPopenคืนPopenวัตถุ
call ไม่บล็อก ในขณะที่มันสนับสนุนอาร์กิวเมนต์เดียวกันทั้งหมดเป็นตัวPopenสร้างดังนั้นคุณยังสามารถตั้งค่าเอาท์พุทของกระบวนการตัวแปรสภาพแวดล้อม ฯลฯ สคริปต์ของคุณรอให้โปรแกรมเสร็จสมบูรณ์และcallส่งคืนรหัสที่แสดงถึงสถานะการออกของกระบวนการ
returncode = call(*args, **kwargs)
โดยพื้นฐานแล้วเหมือนกับการโทร
returncode = Popen(*args, **kwargs).wait()
callเป็นเพียงฟังก์ชั่นอำนวยความสะดวก การใช้งานใน CPython อยู่ในsubprocess.py :
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()ดูเหมือนจะชัดเจนมาก คุณช่วยเสนอราคาหรือลิงค์เพื่อให้เรารู้ว่าจะให้ความสำคัญกับคำตอบอย่างไร?