我制作了一个新的 HDFStore 并在其中放入了一些东西。
In [1]: store = pd.HDFStore('data.h5')
In [2]: store
Out[2]:
<class 'pandas.io.pytables.HDFStore'>
File path: data.h5
Empty
In [3]: store['a'] = Series([1, 2])
In [4]: store
Out[4]:
<class 'pandas.io.pytables.HDFStore'>
File path: data.h5
/a series (shape->[2])
In [5]: store.close()
In [6]: exit
我重新启动 IPython 并且“错误地”在这种情况下,我尝试从错误的目录打开我的商店。
In [1]: cd some_directory
/home/dallan/some_directory
In [2]: store = pd.HDFStore('data.h5')
哎呀!意识到我的错误,我cd
到正确的目录并在正确的目录中重新分配store
变量:
In [3]: cd
/home/dallan
In [4]: store = pd.HDFStore('data.h5')
In [5]: store
Out[5]:
<class 'pandas.io.pytables.HDFStore'>
File path: data.h5
Empty
In [6]: exit
我的问题:这里发生了什么?为什么在我不小心尝试从错误的目录访问商店后,我无法从正确的目录打开商店?下面,当我打开文件而没有先在错误的目录中打开时,你可以看到它实际上就在那里,一切都很好。
In [1]: store = pd.HDFStore('data.h5')
In [2]: store
Out[2]:
<class 'pandas.io.pytables.HDFStore'>
File path: data.h5
/a series (shape->[2])
这是某种上下文问题吗?我不知所措。这个粗心的错误经常发生在我身上,以至于我进入了蜂巢。谢谢!
更新
我确实认为这是 HDFStore 的一个错误。似乎cd
工作正常。见证这与 CSV 一起正常工作:
In [1]: Series([1, 2]).to_csv('test.txt')
In [2]: exit
In [1]: cd some_directory/
/home/dallan/some_directory
In [2]: s = pd.read_csv('test.txt')
(...) IOError: File test.txt does not exist
In [3]: cd
/home/dallan
In [4]: s = pd.read_csv('test.txt')
In [5]: s
Out[5]:
0 1
0 1 2
按照 Jeff 的建议,我尝试!cd
揭示了一个意外的 IPython 行为:
In [1]: pwd
Out[1]: u'/home/dallan'
In [2]: !cd some_directory/
In [3]: pwd
Out[3]: u'/home/dallan'
In [4]: !cd /home/dallan/some_directory/
In [5]: pwd
Out[5]: u'/home/dallan'
In [6]: cd some_directory/
/home/dallan/some_directory
In [7]: pwd
Out[7]: u'/home/dallan/some_directory'