我注意到路径在IPython中的工作方式有些奇怪。我使用的是1.2.1版本,但我也看到了1.1中的问题。我注意到的第一件事是%pwd和%cd魔术会给出不同的结果。如果我使用os.getcwd(),我看到%cd宏似乎是正确的。谁能解释为什么会这样?
%pwd
Out[1]: u'C:\\Users\\bubnabm1\\Documents\\Python Scripts'
%cd
C:\emacs
import os
os.getcwd()
Out[4]: 'C:\\emacs'
我注意到的第二个(可能是相关的)问题是,当我使用%cd magic改变我的路径时,它会打印到stdout的新路径,而os.getcwd()显示路径已经改变,但如果我再次调用%cd它会打印旧路径,就好像什么都没有改变一样。这里有什么我想念的吗?继续我之前的示例,下面的代码示例显示了这种行为:
%cd ..
C:
os.getcwd()
Out[6]: 'C:\\'
%cd
C:\emacs
我查看了StackOverflow,Google和IPython问题跟踪器,但没有找到任何可以解释此行为的内容。然而,我是一个新的IPython用户,我很可能会误解某些事情或做错事,所以我想在将问题提交给IPython团队之前发布。任何帮助将不胜感激。
答案 0 :(得分:1)
IPython的%cd magic与其他类似shell的魔术命令(pwd,ls)一样,是在Linux上建模的,而不是在Windows上建模的。
在Windows中,没有参数的cd命令就像Linux pwd一样 - 它打印工作目录。你显然希望从IPython的%cd魔术中获得这种行为。但是在Linux / OSX / * nix中,没有参数的cd命令会将工作目录更改为您的主目录。