15
เอาต์พุตสดจากคำสั่ง subprocess
ฉันใช้สคริปต์หลามเป็นไดรเวอร์สำหรับรหัสไฮโดรไดนามิกส์ เมื่อถึงเวลาที่จะทำการจำลองผมใช้subprocess.Popenเพื่อเรียกใช้รหัสรวบรวมผลลัพธ์จาก stdout และ stderr ลงในsubprocess.PIPE--- จากนั้นฉันสามารถพิมพ์ (และบันทึกลงในแฟ้มบันทึก) ข้อมูลผลลัพธ์และตรวจสอบข้อผิดพลาดใด ๆ . ปัญหาคือฉันไม่รู้ว่าโค้ดกำลังดำเนินไปอย่างไร ถ้าฉันเรียกใช้โดยตรงจากบรรทัดคำสั่งมันให้ผลลัพธ์เกี่ยวกับการวนซ้ำของมันที่เวลากี่โมงครั้งต่อไปคืออะไรเป็นต้น มีวิธีที่จะเก็บเอาท์พุททั้งสอง (สำหรับการบันทึกและการตรวจสอบข้อผิดพลาด) และยังผลิตถ่ายทอดสดสตรีมมิ่ง? ส่วนที่เกี่ยวข้องของรหัสของฉัน: ret_val = subprocess.Popen( run_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True ) output, errors = ret_val.communicate() log_file.write(output) print output if( ret_val.returncode ): print "RUN failed\n\n%s\n\n" % (errors) success = False if( errors ): log_file.write("\n\n%s\n\n" % errors) เดิมทีฉันกำลังทำการส่งrun_commandผ่านteeเพื่อให้สำเนาไปที่ไฟล์บันทึกโดยตรงและกระแสข้อมูลยังคงส่งออกไปยังเทอร์มินัลโดยตรง …