2012-02-20 18 views
0

我试图上传一个utf-8编码文件。在Python2.x我用的是一样的东西:在Python3.x中将文件上传为utf-8

  lines = filearg.file.readlines()

在Python3.2一个获得字节流的迭代器。我想可以这样做:

  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'类型? – 2012-02-20 15:47:00

+0

我正在使用CherryPy来运行一个小型Web应用程序。它的用户可以上传他们的文件:filearg是他们在应用程序页面上填写的文件参数。 – Tsf 2012-02-21 14:52:35

回答

2

没有更多的信息(?什么框架您使用的),我们不知道是否有一个整洁的方式做到这一点。但一般如下:

HTTP通信是基于字节的:不一定是指定的编码,如果有,它可能不正确。所以给你一些字节并让你计算出如何处理它们是有道理的。如果你想有一个文本文件的对象,你可以使用io.TextIOWrapper

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

工作完美 - 谢谢! – Tsf 2012-02-21 14:53:09

0

在python2.x使用类似的方法是:

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

,您可以尝试在python3.x