เท่าที่ฉันรู้ Python มี 3 วิธีในการค้นหาว่าระบบปฏิบัติการใดกำลังทำงานอยู่:
os.namesys.platformplatform.system()
การทราบข้อมูลนี้มักมีประโยชน์ในการนำเข้าแบบมีเงื่อนไขหรือการใช้ฟังก์ชันการทำงานที่แตกต่างกันระหว่างแพลตฟอร์มต่างๆ (เช่นtime.clock()บน Windows เทียบtime.time()กับ UNIX)
คำถามของฉันคือทำไมถึงทำสิ่งนี้ได้ 3 วิธี ควรใช้วิธีใดวิธีหนึ่งไม่ใช่วิธีอื่น วิธีใดเป็นวิธีที่ 'ดีที่สุด' (การพิสูจน์ในอนาคตส่วนใหญ่หรือโอกาสน้อยที่สุดที่จะยกเว้นระบบใดระบบหนึ่งซึ่งโปรแกรมของคุณสามารถทำงานได้โดยไม่ได้ตั้งใจ)
ดูเหมือนว่าsys.platformจะเฉพาะเจาะจงมากกว่าos.nameทำให้คุณสามารถแยกแยะwin32จากcygwin(ตรงข้ามกับ just nt) และlinux2จากdarwin(ตรงข้ามกับ justposix ) แต่ถ้าเป็นเช่นนั้นแล้วความแตกต่างระหว่างsys.platformและplatform.system()ล่ะ?
ตัวอย่างเช่นซึ่งดีกว่าสิ่งนี้:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
หรือนี่? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
สำหรับตอนนี้ฉันจะยึดมั่นsys.platformดังนั้นคำถามนี้จึงไม่เร่งด่วนเป็นพิเศษ แต่ฉันจะขอบคุณมากสำหรับคำชี้แจงเกี่ยวกับเรื่องนี้
sys.platform.startswith('linux')แทนsys.platform == 'linux2'เพื่อความเข้ากันได้ในอนาคต