1

我很好奇这个Try and except在遇到这个错误后如何在 python 中工作:

def for_file(data):
    open_file = file('data.txt', 'w')
    try:
        open_file.write(data)
    except:
           print 'This is an error!'
    open_file.close()

输出:这是一个错误!

def for_file(data):
    try:
        open_file = file('data.txt', 'w')
        open_file.write(data)
        print 'Successful!'
    except:
           print 'This is an error!'
    open_file.close()

输出:成功!

这怎么可能?

错误:“ascii”编解码器无法对位置 15-16 中的字符进行编码:序数不在范围内(128)

我正在接收 unicode 格式的数据。我该怎么办?

4

3 回答 3

3

要将 unicode 数据写入文件,请codecs.open()改用:

import codecs

with codecs.open('data.txt', 'w', 'utf-8') as f:
    f.write(data)
于 2013-03-07T13:45:06.923 回答
1

你得到一个 TypeError。当您写入文件时,“数据”需要是字符串或缓冲区。如果您不向其传递字符串或缓冲区,您的第二个函数也将不起作用(我尝试将它们都传递给它们一个 2,但都不起作用)。下面的代码有效。

 def for_file(data):
    open_file = file('data.txt', 'w')
    try:
        open_file.write(str(data))
        print "Success!"
    except:
        import traceback; traceback.print_exc() #I used this to find the error thrown.
        print 'This is an error!'
    open_file.close()
于 2013-03-07T12:58:49.937 回答
0

您可能需要打印错误消息以找出问题所在:

def for_file(data):
    open_file = file('data.txt', 'w')
    try:
        open_file.write(data)
    except Exception as e:
        print 'This is an error!'
        print e
    open_file.close()
于 2013-03-07T13:11:18.167 回答