numpy函数IOError

numpy函数IOError,numpy,genfromtxt,Numpy,Genfromtxt,在我的macbook air上运行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=

在我的macbook air上运行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'
回溯(最近一次呼叫最后一次):
文件“test.py”,第7行,在
sampleInfo=np.genfromtxt(fname=massFile,skip_header=2,usecols=(2,3,4),dtype=float)
文件“//anaconda/lib/python2.7/site packages/numpy/lib/npyio.py”,第1317行,格式为genfromtxt
fhd=iter(np.lib.\u datasource.open(fname,'rbU'))
文件“//anaconda/lib/python2.7/site packages/numpy/lib/_datasource.py”,第145行,打开
返回ds.open(路径、模式)
文件“//anaconda/lib/python2.7/site packages/numpy/lib/_datasource.py”,第477行,打开
返回文件开启器[ext](已找到,模式=模式)
IOError:[Errno 2]没有这样的文件或目录:'/Users/BigD/Dropbox/PhD/PPMS/Users/BigD/Dropbox/PhD/PPMS/DATA/DB/HeatCap/HeatCapMass.txt'
它似乎试图使用路径的一半,然后将完整路径文件添加到其末尾


有人知道为什么会发生这种情况,或者可以建议解决方法吗?

您在
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'

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

您在
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'

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

奇怪的是,回溯中有斜线。不,不是。注意它是如何两次显示
/Users/BigD/Dropbox/PhD/PPMS
?噢。正确的。但为什么呢?啊,因为它是相对的,我现在明白了+1.因为你提供的路径是相对的。我将扩展我的答案。奇怪的是,斜线在回溯中。不,不是。注意它是如何两次显示
/Users/BigD/Dropbox/PhD/PPMS
?噢。正确的。但为什么呢?啊,因为它是相对的,我现在明白了+1.因为你提供的路径是相对的。我将扩展我的答案。