在我的macbook air上运行OSX Mavericks(我几乎可以肯定,前几天在运行Windows 7的电脑上运行的代码几乎完全相同),下面的代码给了我以下错误。
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'
它似乎试图使用一半的路径,然后将完整的路径文件添加到它的末尾
有人知道为什么会发生这种情况,或者可以建议采取变通措施吗?
您在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'
我建议选择后者,这样你就可以在不中断所有路径的情况下移动项目。