ฉันต้องใช้กระบวนการย่อย เปิดเพื่อเปิดหน้าต่าง explorer (ใน Windows เท่านั้น) ด้วยเส้นทาง แต่เส้นทางที่ฉันใช้มีเครื่องหมายทับและไม่ได้ผล เพียงเปิดหน้าต่าง PC explorer ทั่วไปเท่านั้น หากฉันแทนที่ด้วยแบ็กสแลชด้วยตนเองมันก็ใช้ได้ดี แต่ฉันต้องการให้สิ่งนี้เกิดขึ้นกับเส้นทางตัวแปร
ฉันได้ลองใช้ os.path.dirname เพื่อพยายาม "ทำให้ปกติ" เส้นทาง แต่ก็ไม่ได้ผลเช่นกัน IOW รหัสนี้ให้เฉพาะหน้าต่าง PC explorer ทั่วไปเท่านั้น:
myRoot = "D:/SomePath/Somefile"
subprocess.Popen(r'explorer /select, myRoot')
หรือแม้กระทั่ง:
myRoot = "D:/SomePath/Somefile"
subprocess.Popen(r'explorer /select, os.path.abspath(myRoot)')
แต่สิ่งนี้ได้ผล:
myRoot = "D:\SomePath\Somefile"
subprocess.Popen(r'explorer /select, myRoot')
ฉันได้ลองแทนที่สตริงสแลชเหล่านั้นด้วยตนเองแล้ว แต่ฉันไม่สามารถรับมันได้ไม่ว่าจะลองไปหลายวิธีแล้ว (เห็นได้ชัดว่ากำลังทำอะไรผิด) มีเบาะแสอะไรบ้าง? (ฉันต้องการสิ่งนี้เพื่อทำงานใน Windows เท่านั้น และไม่มีทางที่ฉันจะได้รับเครื่องหมายทับไม่ให้เข้ามาเพราะฉันอ่านจากไฟล์ที่สร้างด้วยโปรแกรมภายนอก)
ฉันขอขอบคุณความช่วยเหลือที่ผู้คนพยายามมอบให้ แต่ให้ฉันลองอธิบายให้กระจ่างกว่านี้ก่อน บรรทัดของเส้นทางมาจากไฟล์ภายนอกที่ฉันไม่สามารถควบคุมได้ ดังนั้นจึงดูเหมือนตัวอย่างที่มีเครื่องหมายทับเสมอ ซึ่งใช้ไม่ได้กับการเปิดกระบวนการย่อย explorer ไม่ว่าฉันจะลองด้วยวิธีใดก็ตาม (รวมถึงตัวอย่างที่ให้ไว้ด้านล่าง)
หากฉันระบุเส้นทางด้วยแบ็กสแลชด้วยตนเอง มันก็ใช้งานได้ ดังนั้นสิ่งที่ฉันต้องการคือบางสิ่งที่จะแปลงเส้นทางที่ถูกสแลชไปข้างหน้าเป็นเส้นทางแบ็กสแลช และจนถึงขณะนี้ยังไม่มีคำแนะนำใดที่ใช้งานได้