在Macbook上打开文本文件

时间:2020-03-11 03:13:38

标签: python

我在Macbook上下载了一个文本文件,我相信我的代码是正确的,并且文件的拼写没有错误。这是我的代码

Mydata=r'/Users/janetnorio/Desktop/CylindricalRollerBearingData_01.txt'
with open(Mydata, 'r') as Datafile:
  Datafile.readline()
  Datafile.readline()
  Units=Datafile.readline().split('\t')

,代码显示以下内容

    Traceback (most recent call last):
      File "/Applications/Python 3.7/Homework assignments and other /Python_project01.py", line 7, in <module>
        Datafile.readline()
      File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/codecs.py", line 322, in decode
        (result, consumed) = self._buffer_decode(data, self.errors, final)
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe0 in position 24: invalid continuation byte

有人可以告诉我怎么了吗?

3 个答案:

答案 0 :(得分:0)

根据Wikipedia的描述,文件中的Unicode字符的用法可能不正确,此处有有关某些二进制值必须紧跟其他值的信息:https://en.wikipedia.org/wiki/UTF-8#Design。我不能肯定地说出来,但是因为我没有看到文本文件的内容。

答案 1 :(得分:0)

Mydata=r'/Users/janetnorio/Desktop/CylindricalRollerBearingData_01.txt'
with open(Mydata, 'r', encoding="ISO-8859-1") as Datafile:
  Datafile.readline()
  Datafile.readline()
  Units=Datafile.readline().split('\t')

我认为您应该为open添加一个编码参数。

答案 2 :(得分:0)

当前,无法在MacOS环境中测试以下代码,
但是总结每个人的答案和评论,您的代码应该看起来像

#include <boost/archive/iterators/binary_from_base64.hpp>
#include <boost/archive/iterators/insert_linebreaks.hpp>
#include <boost/archive/iterators/transform_width.hpp>
#include <boost/archive/iterators/ostream_iterator.hpp>
#include <boost/gil.hpp>
#include <boost/gil/io/read_image.hpp>
#include <boost/gil/extension/io/tiff.hpp>

#include <sstream>

using base64_decode_iterator = transform_width<binary_from_base64<const char*>, 8, 6>;

int main(int argc, char* argv[]) {
  const char* data = "base64-data";
  std::stringstream ss;

  std::copy(
    base64_decode_iterator{data},
    base64_decode_iterator{data + std::strlen(data)},
    std::ostream_iterator<char>{ss}
  );
  boost::gil::rgb8_image_t img;
  read_image(ss, img, boost::gil::tiff_tag());

  return 0;
}