10
เปลี่ยนเส้นทาง stdout เป็นไฟล์ใน Python หรือไม่?
Наэтотвопросестьответына Stack Overflow เวอร์ชั่นก่อนหน้า : ถัดไปบทวิจารณ์ sys.stdout вфайл ฉันจะเปลี่ยนเส้นทาง stdout ไปยังไฟล์ที่กำหนดเองใน Python ได้อย่างไร เมื่อสคริปต์ Python ที่รันเป็นเวลานาน (เช่นเว็บแอปพลิเคชัน) เริ่มต้นจากภายในเซสชัน ssh และ backgounded และปิดเซสชัน ssh แอปพลิเคชันจะเพิ่ม IOError และล้มเหลวทันทีที่พยายามเขียนไปยัง stdout ฉันต้องการค้นหาวิธีที่จะทำให้แอปพลิเคชันและโมดูลส่งออกไปยังไฟล์แทนที่จะเป็น stdout เพื่อป้องกันความล้มเหลวเนื่องจาก IOError ขณะนี้ฉันใช้ nohup เพื่อเปลี่ยนเส้นทางการส่งออกไปยังไฟล์และนั่นทำให้งานเสร็จ แต่ฉันสงสัยว่ามีวิธีที่จะทำหรือไม่โดยไม่ต้องใช้ nohup จากความอยากรู้ ฉันได้ลองไปแล้วsys.stdout = open('somefile', 'w')แต่นี่ดูเหมือนจะไม่ป้องกันบางโมดูลภายนอกที่ยังคงส่งสัญญาณออกไปยังเทอร์มินัล (หรืออาจเป็นเพราะsys.stdout = ...สายไม่ได้ทำงานเลย) ฉันรู้ว่ามันควรจะทำงานได้จากสคริปต์ที่เรียบง่ายกว่าที่ฉันเคยทดสอบ แต่ฉันยังไม่มีเวลาที่จะทำการทดสอบกับเว็บแอปพลิเคชัน