在文件处理过程中,try和except如何在python中工作?

在文件处理过程中,try和except如何在python中工作?,python,try-catch,file-handling,Python,Try Catch,File Handling,我很好奇在遇到这个错误后,这个Try和在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:

我很好奇在遇到这个错误后,这个Try在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格式的数据。我该怎么办?

您遇到了一个打字错误。写入文件时,“数据”必须是字符串或缓冲区。如果不传递字符串或缓冲区,第二个函数也将不起作用(我尝试了两个函数,都传递了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()

你得到一个打字错误。写入文件时,“数据”必须是字符串或缓冲区。如果不传递字符串或缓冲区,第二个函数也将不起作用(我尝试了两个函数,都传递了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()

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

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()

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

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()

要将unicode数据写入文件,请改用:


要将unicode数据写入文件,请改用:


是否添加
导入回溯;traceback.print_exc()
except
子句,并将输出添加到问题?错误是什么?您的
except
块将捕获任何内容。我已添加了该错误。接收的数据是unicode格式的。使用str()没有帮助。@Hemant无法解释为什么它在第一个示例中有效,而在第二个示例中无效。您是否使用相同的数据运行这两个代码段?首先阅读“每个软件开发人员绝对、肯定必须了解Unicode和字符集的绝对最小值”,您是否会添加
import traceback;traceback.print_exc()
except
子句,并将输出添加到问题?错误是什么?您的
except
块将捕获任何内容。我已添加了该错误。接收的数据是unicode格式的。使用str()没有帮助。@Hemant无法解释为什么它在第一个示例中有效,而在第二个示例中无效。您是否使用相同的数据运行这两个代码段?首先阅读“每个软件开发人员绝对、肯定必须了解Unicode和字符集的绝对最小值”,如果“两者都不起作用”,则您没有再现OP的情况。OP没有告知我们他使用了哪些输入。我只是觉得他在这两者之间有所改变。如果没有,(即,他传递了一个字符串),那么两个都应该工作。没有他的投入,我什么都做不了。@NightHallow:是的。我正在获取unicode格式的数据。str()不起作用..如果“两个都不起作用”,你就没有再现OP的情况。OP也没有告诉我们他使用了什么输入。我只是觉得他在这两者之间有所改变。如果没有,(即,他传递了一个字符串),那么两个都应该工作。没有他的投入,我什么都做不了。@NightHallow:是的。我正在获取unicode格式的数据。str()不工作。。