打开文本文档的问题 - unicode错误

时间:2009-04-22 16:23:49

标签: python unicode

我可能有一个相当简单的问题。但是,我刚刚开始使用python,它只会让我发疯。我按照书的说明,想打开一个简单的文本文件。 我正在使用的代码:

import sys
try:
 d = open("p0901aus.txt" , "W")
except:
 print("Unsucessfull")
 sys.exit(0)

我要么得到消息,说我打开文件不够用或弹出显示说:

(unicode eror)'unicodeescape'编解码器无法解码位置2-4的字节:截断\ UXXXXXXXX转义

我不知道问题是什么。我试图用不同的代码保存文档,尝试不同的路径......总是同样的问题

有人知道任何帮助吗?

非常感谢你,

乔治 ps:我正在使用windows vista

3 个答案:

答案 0 :(得分:5)

  

(unicode eror)'unicodeescape'编解码器无法解码位置2-4的字节:截断\ UXXXXXXXX转义

这可能意味着您尝试读取的文件不在open()期望的编码中。显然open()需要一些Unicode编码(很可能是UTF-8或UTF-16),但你的文件不是那样编码的。

通常不应使用plain open()来读取文本文件,因为如果不指定编码,就无法正确读取文本文件(除非是纯ASCII)。

使用编解码器:

import codecs
fileObj = codecs.open( "someFile", "r", "utf-8" )
u = fileObj.read() # Returns a Unicode string from the UTF-8 bytes in the file

答案 1 :(得分:2)

将其更改为

# for Python 2.5+
import sys
try:
   d = open("p0901aus.txt","w")
except Exception, ex:
   print "Unsuccessful."
   print ex
   sys.exit(0)

# for Python 3
import sys
import codecs
try:
  d = codecs.open("p0901aus.txt","w","utf-8")
except Exception as ex:
  print("Unsuccessful.")
  print(ex)
  sys.exit(0)

W区分大小写。我不想一次性使用所有Python语法,但是知道如何显示引发的异常将是有用的,这是一种方法。

此外,您正在打开文件进行写入,而不是阅读。那是你想要的吗?

如果已经存在名为p0901aus.txt的文档,并且您想要阅读它,请执行以下操作:

#for Python 2.5+
import sys
try:
   d = open("p0901aus.txt","r")
   print "Awesome, I opened p0901aus.txt.  Here is what I found there:"
   for l in d:
      print l
except Exception, ex:
   print "Unsuccessful."
   print ex
   sys.exit(0)

#for Python 3+
import sys
import codecs
try:
   d = codecs.open("p0901aus.txt","r","utf-8")
   print "Awesome, I opened p0901aus.txt.  Here is what I found there:"
   for l in d:
      print(l)
except Exception, ex:
   print("Unsuccessful.")
   print(ex)
   sys.exit(0)

当然,您也可以使用Python 2.5中的编解码器,如果您这样做,您的代码将更高质量(“正确”)。 Python 3似乎将字节顺序标记视为好奇心和线路噪声之间的某种东西,这是一个无赖。

答案 2 :(得分:2)

import csv

data = csv.reader(open('c:\x\list.csv' ))

for row in data:

    print(row)

print('ready')

打开“(unicode错误)'unicodeescape'编解码器无法解码位置2-4中的字节:截断\ xXX转义”

尝试使用c:\\x\\list.csv代替c:\x\list.csv

这是Python 3代码。