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