2011-01-20 24 views
5

खोलना और उपयोग करना मैक दुनिया के लिए अपेक्षाकृत नया हूं। मेरा सवाल मैक ओएसएक्स पर पायथन का उपयोग कर एक एप्लिकेशन खोलने से संबंधित है। जो मैंने अभी तक पाया है, ऐसा लगता है कि एप्लिकेशन ऐप प्रारूप में संग्रहीत हैं जो वास्तव में निर्देशिकाएं हैं। ऐप खोलते समय इन्हें ओएस द्वारा किसी तरह से विश्लेषण किया जाता है? मैं पाइथन का उपयोग करके सफारी खोलना चाहता हूं और यह मेरी/एप्प्लिकेशंस/Safari.app निर्देशिका में है। क्या कोई विशिष्ट बाइनरी है जो मुझे ओएससिस्टम से गुज़रनी चाहिए या क्या मुझे इसके बारे में पूरी तरह से अलग तरीके से जाना चाहिए? मेरा अंतिम लक्ष्य सफारी को स्थानीय HTML फ़ाइल खोलना है, इसे बंद करें और फिर एक और स्थानीय HTML फ़ाइल खोलें।सफारी

धन्यवाद, -जॉन

उत्तर

14

अजगर मानक पुस्तकालय webbrowser मॉड्यूल जो आपको एक मंच स्वतंत्र रास्ते में एक नई ब्राउज़र विंडो या टैब खोलने के लिए अनुमति देता है । यह ओएस एक्स पर सफारी का समर्थन करता है, तो यह उपयोगकर्ता के डिफ़ॉल्ट है करता है:

>>> import webbrowser 
>>> webbrowser.open("http://stackoverflow.com") 

लेकिन webbrowser एक ब्राउज़र विंडो बंद करने का समर्थन नहीं करता। उस स्तर के नियंत्रण के लिए, आप py-appscript इंस्टॉल करके सफारी के ऐप्पल इवेंट स्क्रिप्टिंग इंटरफ़ेस का उपयोग करके सबसे अच्छे हैं।

>>> from appscript import * 
>>> safari = app("Safari") 
>>> safari.make(new=k.document,with_properties={k.URL:"http://stackoverflow.com"}) 
>>> safari.windows.first.current_tab.close() 

तुम सिर्फ वेब पेज टैब आपको खोला में दिखाया गया है बदलना चाहते हैं:

>>> safari.windows.first.current_tab.URL.set("http://www.google.com") 
>>> safari.windows.first.current_tab.URL.set("http://www.python.com") 

सफारी एप्पल घटनाक्रम इंटरफेस कुछ गैर सहज है (दुर्भाग्य से, कि मैक अनुप्रयोगों के साथ असामान्य नहीं है)। यदि आपको अधिक जटिल चीजें करने की आवश्यकता है तो वहां संदर्भ हैं। लेकिन पायथन और पाई-ऐपस्क्रिप्ट आपको काम करने के लिए ठोस आधार प्रदान करते हैं।

+0

उत्तर और उदाहरण कोड के लिए बहुत बहुत धन्यवाद! – user583599

+0

किसी भी ब्राउज़र और ओएस के लिए काम करने वाले उत्तर के लिए धन्यवाद। मैं जवाब के लिए नीचे स्क्रॉल, मैं सोचा कि जवाब सिर्फ os.system या subprocess.Popen का उपयोग करेंगे। इसके बजाए, आपने हमें एक सरल जवाब दिया। –

+0

कोई विचार यह फ़ायरफ़ॉक्स डिफ़ॉल्ट रूप से क्यों खोल सकता है, भले ही सफारी सिस्टम का डिफ़ॉल्ट ब्राउज़र है? मैं ब्राउजर 'टाइप' ''macosx'' का उपयोग नहीं कर सकता, लेकिन कम से कम' webbrowser.get (' सफारी ') दस्तावेज में चर्चा के रूप में काम करता है। – Chris

0

यह मेरे लिए काम करता है:

os.system("open /Applications/Safari.app http://www.google.com") 
+0

धन्यवाद कि काम करता है वहाँ खुला यह है अलग-अलग टैब या वेब पृष्ठों को बंद करने के मामले में सफारी के साथ बातचीत करने के लिए एक रास्ता होगा – user583599

+0

@ user583599 सफारी के साथ बातचीत एप्पल के साथ सबसे अच्छा किया जाता है? घटनाएं। @ नेड का उत्तर देखें। – chrisaycock

+0

नेड के उत्तर को देखने से और कुछ खोजों से मैं रुचि रखने वाले किसी के लिए http://wiki.python.org/moin/MacPython/AppscriptModule के साथ आया था। – user583599

0

ओएससिस्टम ("ओपन-ए/एप्प्लिकेशंस/सफ़ारी.एप http://www.google.com") यह काम करने के लिए जब सफारी डिफ़ॉल्ट ऐड-ए खुला होने के बाद नहीं है। अभी तक नहीं कर सकते टिप्पणी (नीचे 50 (प्रतिष्ठा:।)