【问题标题】:python open file errorpython打开文件错误
【发布时间】:2015-08-22 09:20:54
【问题描述】:

我正在尝试打开一些文件,我知道使用 UTF-8 编码的文件中有一些错误,所以我将在 python3 中做的是

open(fileName, 'r', errors = 'ignore') 

但是现在我需要使用python2,对应的方法是什么?

下面是我改成编解码器后的代码

    with codecs.open('data/journalName1.csv', 'rU', errors="ignore") as file:
        reader = csv.reader(file)
        for line in reader:
            print(line) 

文件在这里https://www.dropbox.com/s/9qj9v5mtd4ah8nm/journalName.csv?dl=0

【问题讨论】:

  • 可以分享文件吗?
  • 不是文件的问题,很多文件都会报错,我只是问如何处理报错。

标签: python python-2.7


【解决方案1】:

Python 2 不支持使用内置的 open 功能。相反,您必须使用编解码器。

import codecs
f = codecs.open(fileName, 'r', errors = 'ignore')

如果您决定将来需要切换 Python 版本,这适用于 Python 2 和 3。

【讨论】:

  • 仍然不正确,“UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe6 in position 2028: invalid continuation byte” 仍然有错误,我要添加我的代码和上传文件。
  • 其实我只是将这些行复制到另一个文件中,没有错误,但是对于这个文件,如果我在python3中使用旧的方式,它可以通过,但是在python2中使用codecs.open,有还是报错,请帮帮我,谢谢!
【解决方案2】:

对于 UTF-8 编码的文件,我建议使用 io 模块。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import io

f=io.open('file.txt', 'r',  encoding='utf8')
s=f.read()
f.close()

【讨论】:

  • some errors in the file with UTF-8 encoding 表示它确实不是纯 UTF-8 文件。
  • 我的猜测是 OP 出现错误:“UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)”等。它有时会发生在 UTF-8 解码的字符串中。这种错误通常可以通过 UTF-8 编码来修复,而不是 ASCII。
猜你喜欢
  • 2013-08-19
  • 1970-01-01
  • 2018-01-27
  • 2021-05-03
  • 2013-05-03
  • 2014-01-02
  • 2020-12-31
  • 2011-10-19
相关资源
最近更新 更多