मेरे पास एक स्क्रिप्ट है जहां उपयोगकर्ता को फ़ाइल नाम (एक फ़ाइल जो खोला जाना है) टाइप करने के लिए कहा जाता है, और यदि फ़ाइल वर्तमान निर्देशिका में मौजूद नहीं है, तो उपयोगकर्ता को फिर से संकेत दिया जाता है। यहाँ लघु संस्करण है:पायथन की "खुली()" "फ़ाइल नहीं मिली" के लिए अलग-अलग त्रुटियों को फेंकता है - दोनों अपवादों को कैसे संभालें?
file = input("Type filename: ")
...
try:
fileContent = open(filename, "r")
...
except FileNotFoundError:
...
जब मैं अजगर में मेरी MacOS एक्स पर मेरी स्क्रिप्ट का परीक्षण किया 3.3x यह बिल्कुल ठीक है जब मैं उद्देश्य पर गलत फ़ाइल नाम टाइप करें काम किया (यह "उम्मीद" के अंतर्गत सूट कार्यान्वित)।
हालांकि, जब मैं पाइथन 3.2x में एक विंडोज कंप्यूटर पर अपना कोड चलाने के लिए चाहता था, तो मुझे एक त्रुटि मिलती है जो कहती है कि "FileNotFoundError" परिभाषित नहीं है। तो, विंडोज़ पर पायथन 3.2 सोचता है कि "FileNotFoundError" एक चर है और प्रोग्राम एक त्रुटि के साथ छोड़ देता है।
मुझे पता चला कि विंडोज़ पर पाइथन 3.2 "IOError" फेंकता है यदि इनपुट फ़ाइल नाम मान्य नहीं है। मैंने इसे पाइथन 2.7 में अपनी लिनक्स मशीन पर परीक्षण किया, और यह एक आईओईआरर भी है।
मेरे समस्या अब है, उस के साथ कोड
except "FileNotFoundError":
विंडोज के अजगर 3.2 पर नहीं चलेंगे, लेकिन अगर मैं यह
except "IOError":
को बदलने के लिए उस पर मेरी मैक काम नहीं करेगा अब और।
मैं इसके आसपास कैसे काम कर सकता हूं? एकमात्र तरीका मैं सोच सकता हूं कि केवल except
का उपयोग करना है, जिसे मैं आमतौर पर नहीं चाहता हूं।
यह मैक/विंडोज के कारण नहीं है, यह पायथन के * संस्करण * है। मैं ओएस एक्स पर 3.2/3.3 की जांच भी करूंगा (और विंडोज़ पर 3.3), परिवर्तन लॉग से परामर्श लें, और उसके बाद प्रश्न/शीर्षक को उपयुक्त के रूप में संशोधित करें। –