我在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
有人可以告诉我怎么了吗?
答案 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;
}