2012-02-20 7 views
0

utf-8でエンコードされたファイルをアップロードしようとしています。バイトストリームのイテレータを取得Python3.2でPython3.xでutf-8としてファイルをアップロードする

  lines = filearg.file.readlines()

:Python2.xでは私のようなものを使用していました。

  lines = [line.decode() for line in [filearg.file.readlines()]

私はもっと簡単な方法がないかどうかを疑問に思う:私のような何かを行うことができますね。

  with open(path) as f:   ## utf-8 is the default
     lines = list[f.readlines()]

を、私は、UTF-8文字列の私のリストを取得する:通常のファイルのために私はちょうど書きます。

- より多くの情報がなければ、TSF

+1

でそれを試すことができます「アップロード」とはどういう意味ですか? 'filearg'のタイプは何ですか? –

+0

CherryPyを使用して、小さなWebアプリケーションを実行しています。そのユーザーはファイルをアップロードすることができます。fileargは、アプリケーションページに入力するファイル引数です。 – Tsf

答えて

2

(何フレームワークを使用していますか?)これを行うにはきちんとした方法がありますならば、我々は知りません。しかし、一般的に:

HTTP通信はバイトベースです:必ずしもエンコーディングが指定されているとは限りません。存在する場合、正しくない可能性があります。それで、バイトを与えて、それらで何をするのかを考えさせるのは理にかなっています。テキストファイルのようなオブジェクトが必要な場合は、io.TextIOWrapperを使用することができます。

file = io.TextIOWrapper(filearg.file, 'utf-8') 
+0

完全に働いた - ありがとう! – Tsf

0

python2.xに使用される同様の方法は次のとおりです。

import codecs 
with codecs.open(path, encoding='utf-8') as f: 
    lines = [l for l in f] 

あなたはpython3.x

関連する問題