每當我用Python保存文件時,它都會保存在當前工作目錄中。由於某種未知的原因,Python已經停止保存pwd
。我的數字現在被保存在它下面的目錄中。因此,他們現在被保存在/Documents/.../OrbitalMechanics
中,而不是保存在/Documents/.../OrbitalMechanics/OrbitalNotes
中。我的操作系統是Ubuntu 13.04,我正在使用Emacs,並從終端寫入程序。當我打電話給我的.py
文件時,路徑是emacs ~/Documents/.../OrbitalMechanics/OrbitalNotes/stumpff.py
。因此,我在正確的目錄中。Python:爲什麼Python會停止在當前工作目錄中保存
什麼會導致此問題?當我保存一個數字時,我沒有改變任何我平常做的事情。
這何處發生的程序如下:
#!/usr/bin/env ipython
# This program plots the Stumpff functions C(z) and S(z)
import numpy as np
import pylab
from matplotlib.ticker import MaxNLocator
def C(z):
if z > 0:
return (1 - np.cos(z ** 0.5))/z
elif z < 0:
return (np.cosh(np.sqrt(-z)) - 1)/-z
return 0.5
def S(z):
if z > 0:
return (np.sqrt(z) - np.sin(z ** 0.5))/np.sqrt(z) ** 3
elif z < 0:
return (np.sinh(np.sqrt(-z)) - np.sqrt(-z))/np.sqrt(-z) ** 3
return 1.0/6.0
vC = np.vectorize(C)
vS = np.vectorize(S)
z = np.linspace(-50.0, 500.0, 500000.0)
y = vC(z)
y2 = vS(z)
fig = pylab.figure()
ax = fig.add_subplot(111)
ax.plot(z, y, 'r')
ax.plot(z, y2, 'b')
pylab.legend(('$C(z)$', '$S(z)$'), loc = 0)
pylab.xlim((-50, 0))
pylab.ylim((0, 15))
pylab.xlabel('$z$')
pylab.gca().xaxis.set_major_locator(MaxNLocator(prune = 'lower'))
pylab.savefig('stumpffneg50to0.eps', format = 'eps')
編輯:
以前,當我救了一個數字,這個數字將保存在該.py
文件位於連目錄如果我不在那個目錄中。也就是說,我可以在主目錄中,運行emacs
中的文件,並且該文件將被保存在我想要的位置。現在,即使該文件用於始終保存在python腳本的位置,情況並非如此。
如果我從終端運行該文件作爲ipython ~/path/to/file
,則這些數字將保存在.py
文件所在的位置。
如果我在emacs
打開該文件,並使用C-c C-c
運行該文件,該文件將保存下來一個級別從目錄中.py
文件是英寸
如果我到該目錄,然後打開該文件emacs
,該文件將再次保存一級。
你的代碼工作完美的我(OS X ,從終端運行)。你是從Emacs裏面運行的嗎?如果是這樣,如果從終端運行它會發生什麼情況,而在想要保存文件的確切目錄中?如果你從ipython切換到python會發生什麼? – cge
@cge我從終端內運行它。這是第一次發生這種情況。如果我將它作爲'ipython path/to/file'運行,那麼它將保存在正確的目錄中。 – dustin
當你啓動一個腳本時,它不會'cd'到腳本所在的目錄。例如,如果你是cd〜/ foo,那麼'python〜/ bar/baz.py'就是當前的工作目錄該腳本仍然是'〜/ foo',而不是'〜/ bar'。 – abarnert