我正在从文件中读取一行,然后将该行复制到另一个文件中。
这是读取文件内容的代码
files = [f for f in os.listdir('.') if os.path.isfile(f)]
for file in files:
if file.endswith(".ttl"):
with open(file) as fileTTL:
lines = fileTTL.readlines()
for line in lines:
writeRDFToFile(line)
并且对于每一行,我调用 writeRDFToFile 函数,即:
def writeRDFToFile(rdf):
f = open('joined.ttl','w')
try:
rdf = rdf.encode('UTF-8')
f.write(rdf) # python will convert \n to os.linesep
except Exception as e:
print "exception happened " + rdf
print e
f.close()
我收到了这个错误:
'ascii' codec can't decode byte 0xc3 in position XXX: ordinal not in range(128)
关于此值:
Luis_Buñuel Lasse_Hallström
但是如你所见,我已经尝试用UTF-8对其进行编码,那么为什么错误从第一位开始就是ascii?
由于
答案 0 :(得分:1)
我相信你遇到的问题是输入,而不是输出(没有堆栈跟踪很难确定)
您的文件读取(有效地执行open(file).readlines()
)正在读取此文件作为字符串对象的列表,而不是encode('UTF-8)
所需的unicode(它正在尝试某些自动化,我相信,但因为输入不是ASCII而失败。
尝试完全删除rdf = rdf.encode('UTF-8')
。