2014-07-11 66 views
0

我想用numpy.loadtxt加载数据...我试图读取的文件是使用cp1252编码。用numpy有没有可能将编码更改为cp1252?Numpy的LoadTxt编码

以下

import numpy as np 
n = 10 
myfile = '/path/to/myfile' 
mydata = np.loadtxt(myfile, skiprows = n) 

给出:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 189: invalid start byte 

该文件包含随后浮子的表元数据(第一n行)。

编辑:只有在Ubuntu(12.04)上运行此问题时才会出现此问题。在Windows上,它运行良好。出于这个原因,我认为这个问题与编码有关。

EDIT2:打开如下面所示的工作很好,过的文件:

import codecs 
data = codecs.open(myfile, encoding='cp1252') 
datalines = data.readlines() 

不过,我想使用np.loadtext直接将数据读入一个numpy的阵列。

+0

cp1252中的'ox6f'是'ö',你的输入是什么样的? –

+0

只要你使用'numpy 1.8.1'和'n'是正确的。有用。 – emeth

回答

0

我可以自己解决问题。

我只是不得不与适当的文件与numpy的阅读之前:

import numpy as np 
import codecs 

n=10 

filecp = codecs.open(myfile, encoding = 'cp1252') 
mydata = np.loadtxt(filecp, skiprows = n) 

谢谢大家!

+0

我有预感,这导致文件描述符泄漏,除非使用上下文管理器('')。 –