numpy函数IOError

时间:2013-12-16 18:21:52

标签: numpy genfromtxt

在我的macbook上运行OSX Mavericks(我几乎可以肯定这在前几天发生在运行Windows 7且运行几乎完全相同的代码的PC上),以下代码给出了以下错误。

import numpy as np

massFile='Users/BigD/Dropbox/PhD/PPMS/DATA/DB/HeatCap/HeatCapMass.txt'
print massFile

sampleInfo=np.genfromtxt(fname=massFile,skip_header=2,usecols=(2,3,4),dtype=float)

massfile按预期打印出'Users/BigD/Dropbox/PhD/PPMS/DATA/DB/HeatCap/HeatCapMass.txt'

但我收到了错误

Traceback (most recent call last):
  File "test.py", line 7, in <module>
    sampleInfo=np.genfromtxt(fname=massFile,skip_header=2,usecols=(2,3,4),dtype=float)
  File "//anaconda/lib/python2.7/site-packages/numpy/lib/npyio.py", line 1317, in genfromtxt
    fhd = iter(np.lib._datasource.open(fname, 'rbU'))
  File "//anaconda/lib/python2.7/site-packages/numpy/lib/_datasource.py", line 145, in open
    return ds.open(path, mode)
  File "//anaconda/lib/python2.7/site-packages/numpy/lib/_datasource.py", line 477, in open
    return _file_openers[ext](found, mode=mode)
IOError: [Errno 2] No such file or directory: '/Users/BigD/Dropbox/PhD/PPMS/Users/BigD/Dropbox/PhD/PPMS/DATA/DB/HeatCap/HeatCapMass.txt'

它似乎试图使用路径的一半,然后将完整路径文件添加到它的末尾。

有谁知道为什么会这样,或者可以建议一个解决方法?

1 个答案:

答案 0 :(得分:4)

您在massFile中提供的路径是相对于您正在执行该脚本的目录。

要查看您的位置,只需在shell中输入pwd即可。在您的情况下,它将返回/Users/BigD/Dropbox/PhD/PPMS/。因此,这个值会默默地添加到您的路径中:

massFile='/Users/BigD/Dropbox/PhD/PPMS/Users/BigD/Dropbox/PhD/PPMS/DATA/DB/HeatCap/HeatCapMass.txt'

这也是你在追溯中所看到的价值。

有两种方法可以解决这个问题:

要将路径标记为绝对,只需在路径前加上/

massFile='/Users/BigD/Dropbox/PhD/PPMS/DATA/DB/HeatCap/HeatCapMass.txt'

或保持相对,你必须删除不需要的位:

massFile='DATA/DB/HeatCap/HeatCapMass.txt'

我建议选择后者,这样你就可以在不破坏所有路径的情况下移动项目。