2009-08-28 15 views
122

में टेक्स्ट फ़ाइलों को नहीं खोल सकता है। मैं विंडोज 7 मशीनों पर पाइथन 3.1 का उपयोग कर रहा हूं। रूसी डिफ़ॉल्ट सिस्टम भाषा है, और यूटीएफ -8 है । डिफ़ॉल्ट एन्कोडिंग"यूनिकोड त्रुटि" यूनिकोडेस्केप "कोडेक बाइट्स को डीकोड नहीं कर सकता ... पाइथन 3

एक previous question का जवाब को देखते हुए, मैं "कोडेक" मॉड्यूल का उपयोग कर मुझे एक छोटे से भाग्य देने के लिए प्रयास कर रहा है यहाँ कुछ उदाहरण है:।

>>> g = codecs.open("C:\Users\Eric\Desktop\beeline.txt", "r", encoding="utf-8") 
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#39>, line 1) 
>>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8") 
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#40>, line 1) 
>>> g = codecs.open("C:\Python31\Notes.txt", "r", encoding="utf-8") 
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 11-12: malformed \N character escape (<pyshell#41>, line 1) 
>>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8") 
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#44>, line 1) 

मेरे पिछले विचार था, मैंने सोचा था कि यह तथ्य हो सकता है कि खिड़कियां "उपयोगकर्ता" फ़ोल्डर जैसे कुछ फ़ोल्डर्स "अनुवाद" करती हैं, रूसी में (हालांकि "उपयोगकर्ता" टाइप करना अभी भी सही पथ है), इसलिए मैंने इसे आजमाया पायथन 31 फ़ोल्डर। फिर भी, कोई भाग्य नहीं। कोई विचार?

+0

असंबंधित में मदद करता है आपके सवाल का, लेकिन यह अत्यधिक की सलाह भी देते आप अजगर 3.x का उपयोग नहीं फिर भी, जब तक आपके पास लाइब्रेरी को पोर्ट करने की तरह, विशेष रूप से अच्छा कारण नहीं है। – aehlke

+1

Wahnfrieden - क्यों? उतना पुस्तकालय समर्थन नहीं, यकीन है, लेकिन इसके अलावा? – orip

+4

@Wahnfrieden क्या? पाइथन 2 को भविष्य में चरणबद्ध किया जाना है, इसलिए "परिपक्वता" की "कमी" के बावजूद, पाइथन 3 का उपयोग करना समझ में आता है। –

उत्तर

260

समस्या स्ट्रिंग

"C:\Users\Eric\Desktop\beeline.txt" 

यहाँ के साथ है, \U इस तरह के '\ U00014321` के रूप में, आठ-वर्ण यूनिकोड भागने शुरू होता है। आपके कोड में, भागने के बाद चरित्र '' होता है, जो अमान्य है।

आपको या तो सभी बैकस्लाश को डुप्लिकेट करने की आवश्यकता है, या r (कच्ची स्ट्रिंग का उत्पादन करने के लिए) स्ट्रिंग को उपसर्ग करना होगा।

+19

हाहाहा ... मेरे पास बस इतना आसान जाल है, जैसा कि मेरे पास है। बहुत बढ़िया जवाब। –

+0

मुझे यह त्रुटि एक फंक्शन डॉकस्ट्रिंग में मिली है जबकि 2.x कोड को python3 पर पोर्ट करते समय। –

+3

जब मैंने ट्रिपल कोट '' '' कोड के उस अनुभाग के चारों ओर टिप्पणियों का उपयोग किया, जिसमें मैंने '\ U' के साथ कच्ची स्ट्रिंग डाली थी, तो मैंने इस त्रुटि में भाग लिया। अर्थात। स्ट्रिंग ने मुझे एक त्रुटि नहीं दी जब तक कि मैंने इसे टिप्पणी करने की कोशिश नहीं की। इस कारण से डबल बैकस्लैश विधि को प्राथमिकता दी जा सकती है। –

2

मुझे पाइथन 3.2 में यह वही त्रुटि थी। जब मैं फ़ाइल uslugi1.csv ठीक काम करता है में पहली चार हटाने

csv.reader(open('work_dir\uslugi1.csv', newline='', encoding='utf-8')) 

:

मैं ईमेल भेजने और के लिए स्क्रिप्ट है।

+0

यह एक कामकाज होगा लेकिन सही उत्तर ऊपर सूचीबद्ध है। – Johnny

3

openpyxl दस्तावेज़ का संदर्भ लें, आप अनुवर्ती परिवर्तनों के रूप में परिवर्तन कर सकते हैं।

from openpyxl import Workbook 
from openpyxl.drawing.image import Image 

wb = Workbook() 
ws = wb.active 
ws['A1'] = 'Insert a xxx.PNG' 
# Reload an image 
img = Image(**r**'x:\xxx\xxx\xxx.png') 
# Insert to worksheet and anchor next to cells 
ws.add_image(img, 'A2') 
wb.save(**r**'x:\xxx\xxx.xlsx') 
+2

कृपया अपना कोड संपादित करने के बारे में अधिक स्पष्टीकरण जोड़ने के लिए अपनी पोस्ट को संपादित करने पर विचार करें और यह समस्या का समाधान क्यों करेगा। एक उत्तर जिसमें ज्यादातर कोड शामिल होते हैं (भले ही यह काम कर रहा हो) आमतौर पर ओपी को उनकी समस्या को समझने में मदद नहीं करेगा। – SuperBiasedMan

+0

धन्यवाद @ दीपिका आनंद, इसके काम, कृपया बता सकते हैं कि कैसे? thx –

+1

पृष्ठ पर आधिकारिक दस्तावेज़ीकरण का संदर्भ लें: https: //docs.python.org/2/howto/unicode.html। विशेष रूप से रेखा "पाइथन स्रोत कोड में, यूनिकोड अक्षर को 'यू' या 'यू' चरित्र: u'abcdefghijk 'के साथ उपसर्ग के रूप में लिखा जाता है। विशिष्ट कोड बिंदु \ u escape sequence का उपयोग करके लिखा जा सकता है, जिसके बाद चार कोड बिंदु दे रहे हेक्स अंक। \ यू भागने अनुक्रम समान है, लेकिन 8 हेक्स अंकों की अपेक्षा करता है, 4 नहीं। " –

10
विंडोज पर

ठेठ त्रुटि क्योंकि डिफ़ॉल्ट उपयोगकर्ता निर्देशिका C:\user\<your_user> है, इसलिए जब आप एक अजगर समारोह में एक स्ट्रिंग पैरामीटर के रूप में इस मार्ग का उपयोग करना चाहते हैं, आप एक यूनिकोड त्रुटि मिलती है, सिर्फ इसलिए कि \u यूनिकोड भागने है । इसके बाद कोई भी चरित्र संख्यात्मक नहीं होता है।

इसे हल करने के लिए, बस बैकस्लैश दोगुना: C:\\\user\\\<\your_user>...

1

या आप रास्ते में '/' से बदल सकते '\'।

+4

मैं सलाह देता हूं कि आप [दौरे] ले जाएं और [सहायता] पर जाएं। आपका उत्तर हमारे गुणवत्ता मानकों को पूरा नहीं कर रहा है। आपको थोड़ा सा विस्तार करने की आवश्यकता है कि यह क्यों काम करेगा, शायद पूरा कोड उदाहरण बनाएं। – rene

+0

स्टैक ओवरफ़्लो में आपका स्वागत है! कृपया अपना कोड संपादित करने के बारे में और स्पष्टीकरण जोड़ने के लिए अपनी पोस्ट को संपादित करने पर विचार करें और यह समस्या का समाधान क्यों करेगा। एक उत्तर जिसमें ज्यादातर कोड शामिल होते हैं (भले ही यह काम कर रहा हो) आमतौर पर ओपी को उनकी समस्या को समझने में मदद नहीं करेगा। – SuperBiasedMan

0

मुझे एक ही त्रुटि थी, बस अनइंस्टॉल किया गया और दोबारा पैकेज स्थापित किया गया, जो काम करता था!

3

'आर' के साथ उपसर्ग बहुत अच्छी तरह से काम करता है, लेकिन इसे सही वाक्यविन्यास में होना चाहिए। उदाहरण के लिए:

passwordFile = open(r'''C:\Users\Bob\SecretPasswordFile.txt''') 

यहां \\ [डबल बैकस्लैश] की आवश्यकता नहीं है - पठनीयता को बनाए रखता है और अच्छी तरह से काम करता है।

self.path = 'T:\PythonScripts\Projects\Utilities' 
      ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in 
position 25-26: truncated \UXXXXXXXX escape 

ठीक है कि काम किया है::

self.path = r'T:\PythonScripts\Projects\Utilities' 

यह \ यू 'लगता है

self.path = 'T:\PythonScripts\Projects\Utilities' 

इस त्रुटि का उत्पादन:

1

अजगर 3 के साथ मैं इस समस्या थी एक त्रुटि उत्पन्न कर रहा था और स्ट्रिंग से पहले 'आर' आठ-वर्ण यूनिकोड भागने (कच्ची स्ट्रिंग के लिए) बंद कर देता था जो था नाकाम रहने के। (यह एक से अधिक सरलीकरण का एक सा है, लेकिन यह काम करता है अगर आप यूनिकोड के बारे में परवाह नहीं है)

आशा इस किसी

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

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