在文件路径和奇数字符中使用双斜杠的Numpy loadtxt错误

时间:2013-11-04 18:16:37

标签: python windows numpy

我正在使用python(x,y),我在使用numpy loadtxt函数时遇到问题,以前它在linux中运行良好。代码如下所示:

 from numpy import loadtxt    
 values=loadtxt("C:\Users\My_username\path\to\txt\file",float)

我检查过路径是否正确(不要认为我需要使用任何转义字符),文件很好。它最初是一个linux文件,我转换为Windows文件,但它看起来很好。不知道为什么错误插入双反斜杠和“x08”

IOError: [Errno 22] invalid mode ('U') or filename:
    'C:\\Users\\Michael\\SkyDrive\\Documents\\university\third_year\\uni_work\\labs\x08andgap_spectro\x08andgap_spectro_GaAs_1nm\x08andgap_GaAs_v_vs_lambda_1nm.txt'

不得不从cmd复制该错误,因为ipython不允许您选择文本并像人一样复制。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

好吧我常用的技巧都行不通。尝试使用os.path和正斜杠

import os
import numpy as np

fname = os.path.normpath('C:/Users/Michael/SkyDrive/Documents/university/third_year/uni_work/labs/bandgap_spectro/bandgap_spectro_GaAs_1nm/bandgap_GaAs_v_vs_lambda_1nm.txt')
np.loadtxt(fname, float)

试试这个:

loadtxt(ur'C:\Users\Michael\SkyDrive\Documents\university\third_year\uni_work\labs\bandgap_spectro\bandgap_spectro_GaAs_1nm\bandgap_GaAs_v_vs_lambda_1nm.txt', float)

文件名前面有ur

r前缀将告诉python该字符串是 raw ,并且应该忽略转义符。实际上,它会自动插入双反斜杠:

In [132]: r'C:\Users\Michael\SkyDrive\Documents\university\third_year\uni_work\labs\bandgap_spectro\bandgap_spectro_GaAs_1nm\bandgap_GaAs_v_vs_lambda_1nm.txt'
Out[132]: 'C:\\Users\\Michael\\SkyDrive\\Documents\\university\\third_year\\uni_work\\labs\\bandgap_spectro\\bandgap_spectro_GaAs_1nm\\bandgap_GaAs_v_vs_lambda_1nm.txt'

u告诉它使用unicode。

x08来自\b

In [133]: '\b'
Out[133]: '\x08'

这是退格符。