import sys
try:
d = open("p0901aus.txt" , "W")
except:
print("Unsucessfull")
sys.exit(0)
我要么得到消息,说我打开文件不够用或弹出显示说:
(unicode eror)'unicodeescape'编解码器无法解码位置2-4的字节:截断\ UXXXXXXXX转义
我不知道问题是什么。我试图用不同的代码保存文档,尝试不同的路径......总是同样的问题
有人知道任何帮助吗?
非常感谢你,
乔治 ps:我正在使用windows vista
答案 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代码。