2015-01-05 10 views
15

का उपयोग कर फ़ाइल में शामिल करना मैं numpy के savetxt फ़ंक्शन का उपयोग कर फ़ाइल में डेटा जोड़ने की कोशिश कर रहा हूं। नीचे कम से कम काम कर रहे उदाहरण हैपायथन 3-numpy: numpy savetxt

#!/usr/bin/env python3 
import numpy as np 
f=open('asd.dat','a') 
for iind in range(4): 
    a=np.random.rand(10,10) 
    np.savetxt(f,a) 
f.close() 

त्रुटि है कि मुझे मिल गया त्रुटि के प्रकार के बारे में कुछ

File "/usr/lib/python3/dist-packages/numpy/lib/npyio.py", line 1073, in savetxt fh.write(asbytes(format % tuple(row) + newline)) TypeError: must be str, not bytes

यह त्रुटि को Python2 में नहीं होती तो मैं क्या समस्या हो सकती है सोच रहा हूँ । क्या कोई मेरी मदद कर सकता है?

+3

आपको टेक्स्ट मोड के बजाय बाइनरी में अपनी फ़ाइल खोलनी है: 'f = open ('asd.dat', 'ba')'। यह भी सुनिश्चित करने के लिए 'साथ' कथन का उपयोग करने पर विचार करें कि त्रुटि होने पर आपकी फ़ाइल हैंडल ठीक से बंद हो जाती है। – cel

+1

संभावित डुप्लिकेट: https://stackoverflow.com/questions/14437054/why-should-i-give-savetxt-a-file-opened-in-binary-rather-than-text-mode। – nwk

+0

@cel समस्या को हल किया, धन्यवाद – Meenakshi

उत्तर

19

आपको बाइनरी मोड द्वारा फ़ाइल खोलनी चाहिए।

#!/usr/bin/env python3 
import numpy as np   
f=open('asd.dat','ab') 
for iind in range(4): 
    a=np.random.rand(10,10) 
    np.savetxt(f,a) 
f.close() 

संदर्भ: अजगर - कैसे एक csv फ़ाइल के लिए एक numpy सरणी लिखने के लिए? - स्टैक ओवरफ़्लो How to write a numpy array to a csv file?

+0

इस 'बीए' विकल्प के लिए एक लंबा समय लग रहा था। धन्यवाद। – dorien

+0

'बी' विकल्प मेरी मशीन पर np.savetxt के साथ काम नहीं किया। क्या कोई इसकी पुष्टि कर सकता है? –

+0

@ ह्युनुनकिम मेरा पायथन (पायथन-3.5, उबंटू 16.04 पर numpy-1.13.3) कोड से ऊपर अच्छी तरह से काम करते हैं। यदि आप स्ट्रिंग का प्रयास करते हैं, तो डेटा प्रकार ('np.savetxt (f, [" एएए "],"% s ") संलग्न करें) – user4352571

संबंधित मुद्दे