पायथन 2.x में 'फ़ाइल की तरह' वस्तु के साथ:एन्कोडिंग को जानने के बिना पायथन 3 में किसी फ़ाइल में बाइट्स कैसे लिखें?
sys.stdout.write(bytes_)
tempfile.TemporaryFile().write(bytes_)
open('filename', 'wb').write(bytes_)
StringIO().write(bytes_)
कैसे अजगर 3 में भी ऐसा ही करने के लिए?
यह कैसे पायथन 2.x कोड के बराबर लिखने के लिए:
def write(file_, bytes_):
file_.write(bytes_)
नोट: sys.stdout
हमेशा नहीं शब्दार्थ एक पाठ धारा है। कभी-कभी बाइट्स की धारा के रूप में इसे मानना फायदेमंद हो सकता है। उदाहरण के लिए, make encrypted archive of dir/ on remote machine के लिए:
tar -c dir/ | gzip | gpg -c | ssh [email protected] 'dd of=dir.tar.gz.gpg'
इस मामले में यूनिकोड का उपयोग करने के कोई मतलब नहीं है।
वहाँ एक रास्ता जाँच टाइप करने के लिए सहारा के बिना सामान्य समारोह में लिखने के लिए है इस तरह के 'isinstance (file_, कब के रूप में .TextIOWrapper) ', आदि – jfs
@ जेएफ, पायथन 3 विशेष रूप से पाठ बनाम बाइनरी विभाजन को संभालने के लिए डिज़ाइन किया गया है। एन्कोडिंग को जानने के बिना, बाइनरी और टेक्स्ट के बीच जाने का कोई सही तरीका नहीं है। इसलिए एक सामान्य फ़ंक्शन लिखने का कोई तरीका नहीं है जो टेक्स्ट स्ट्रीम में बाइट लिखता है। पाइथन 3 में गोता लगाने पर एक अच्छा [आलेख] (http://diveintopython3.org/strings.html) है। –
सवाल विशेष रूप से * बाइट्स * के बारे में है। उदाहरण के लिए, 'os.write (sys.stdout.fileno(), बाइट्स_) '। – jfs