1

このエラーが発生した後、このTryExceptが 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番目の関数も機能しません(両方に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 に答える