मैं पायथन 3.2.2 पर काम कर रहा हूं। उपयोगकर्ता के पास कंसोल पर मान दर्ज करने का विकल्प होता है या यदि वह केवल ENTER हिट करता है तो डिफ़ॉल्ट मान का उपयोग करने देता है। जैसे यदि उपयोगकर्ता ENTER दबाता है, तो मान c:\temp पर सेट हो जाता है जैसा कि नीचे दिए गए कोड स्निपेट में दिखाया गया है:
READ=os.read(0,100)
if READ == "\n" :
READ="c:\\temp"
यह कोड अजगर 2.7 में काम करता था, लेकिन यह अजगर 3.2.2 पर काम नहीं करता है।
3.2.2 में, READ खाली रहता है। इस कोड को बेहतर बनाने के लिए कृपया कोई सुझाव?
2 जवाब
फ़ंक्शन os.read
पायथन 2.7 में class str
देता है, लेकिन class bytes
पायथन 3.2 में। तो अजगर 3.2 में, if READ == "\n": READ="C:\\temp"
True
कभी नहीं होगा। आप इस तरह बदल सकते हैं:
if str(READ,"ascii") == os.linesep: READ = "C:\\temp"
शायद, अधिक सटीक:
import os,sys
READ = os.read(0,100)
if str(READ,sys.stdin.encoding) == os.linesep:
READ = "C:\\temp"
os.linesep
में बदल दिया।
पायथन 3 ने बनाया है स्ट्रिंग हैंडलिंग में परिवर्तन, इसलिए os.read()
बाइनरी स्ट्रिंग लौटाता है।
कोड के साथ तय किया जाना चाहिए
if READ == b'\n' :
READ="c:\\temp"
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
input()
के बजायos.read(0, 100)
क्यों?print(repr(READ))
।