【问题标题】:Uploading file as utf-8 in Python3.x在 Python3.x 中将文件上传为 utf-8
【发布时间】:2012-02-20 15:36:43
【问题描述】:

我正在尝试上传一个 utf-8 编码的文件。在 Python2.x 中,我使用了类似的东西:

  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

【问题讨论】:

  • “上传”是什么意思? filearg是什么类型的?
  • 我正在使用 CherryPy 运行一个小型 Web 应用程序。它的用户可以上传他们的文件:filearg 是他们在应用程序页面上填写的文件参数。

标签: file-upload utf-8 python-3.x


【解决方案1】:

如果没有更多信息(您使用的是什么框架?),我们不知道是否有一种巧妙的方法可以做到这一点。但一般来说:

HTTP 通信是基于字节的:不一定指定编码,如果有,它可能不正确。所以给你字节并让你弄清楚如何处理它们是有意义的。如果你想要一个类似文本文件的对象,你可以使用io.TextIOWrapper:

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

【讨论】:

    【解决方案2】:

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

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

    你可以在python3.x中试试

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多