Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:调用另一个Python脚本_Python_Import_Subprocess - Fatal编程技术网

Python:调用另一个Python脚本

Python:调用另一个Python脚本,python,import,subprocess,Python,Import,Subprocess,是否可以调用另一个python脚本来访问脚本中的定义而不访问其他内容 在我要导入的脚本中,有一些绘图是我要抑制的,因为其他程序不需要这些绘图。也就是说,我只想访问Stumpff函数的定义,而不绘制图形 我要导入的脚本是: #!/usr/bin/env ipython # This program plots the Stumpff functions C(z) and S(z) import numpy as np import pylab from matplotlib.ticker im

是否可以调用另一个python脚本来访问脚本中的定义而不访问其他内容

在我要导入的脚本中,有一些绘图是我要抑制的,因为其他程序不需要这些绘图。也就是说,我只想访问Stumpff函数的定义,而不绘制图形

我要导入的脚本是:

#!/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, 100000.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, 12))
pylab.xlabel('$z$')
pylab.gca().xaxis.set_major_locator(MaxNLocator(prune = 'lower'))
pylab.savefig('stumpffneg50to0.eps', format = 'eps')


fig2 = pylab.figure()
ax2 = fig2.add_subplot(111)
ax2.plot(z, y, 'r')
ax2.plot(z, y2, 'b')
pylab.legend(('$C(z)$', '$S(z)$'), loc = 1)
pylab.xlim((0, 30))
pylab.ylim((0, 0.5))
pylab.xlabel('$z$')
pylab.gca().xaxis.set_major_locator(MaxNLocator(prune = 'lower'))
pylab.savefig('stumpff0to30.eps', format = 'eps')


fig3 = pylab.figure()
ax3 = fig3.add_subplot(111)
ax3.plot(z, y, 'r')
ax3.plot(z, y2, 'b')
pylab.legend(('$C(z)$', '$S(z)$'), loc = 0)
pylab.xlim((0, 500))
pylab.ylim((0, 0.05))
pylab.xlabel('$z$')
pylab.gca().xaxis.set_major_locator(MaxNLocator(prune = 'lower'))
pylab.savefig('stumpff0to500.eps', format = 'eps')
pylab.show()

在那之后,我的新脚本是否会理解
C(z)
S(z)

您的脚本的编写方式,无法导入它,也无法进行绘图

为了使
import stumpf
能够工作,并且脚本能够理解C(z)和S(z),您需要使绘图代码仅在作为脚本运行时运行。实现这一点的一种方法是将其全部放在main()函数中,然后使用

如果uuuu name_uuuu=='\uuuuuuu main\uuuuuu':
main()
或者,简单地将其全部置于该条件下,如下所示:

#/usr/bin/env ipython
#该程序绘制了Stumpff函数C(z)和S(z)
将numpy作为np导入
进口派拉布
从matplotlib.ticker导入MaxNLocator
def C(z):
如果z>0:
返回值(1-np.cos(z**0.5))/z
elif z<0:
返回值(np.cosh(np.sqrt(-z))-1)/-z
返回0.5
def S(z):
如果z>0:
返回(np.sqrt(z)-np.sin(z**0.5))/np.sqrt(z)**3
elif z<0:
返回(np.sinh(np.sqrt(-z))-np.sqrt(-z))/np.sqrt(-z)**3
返回1.0/6.0
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
vC=np.矢量化(C)
vS=np.矢量化
z=np.linspace(-50.0500.00100000.0)
y=vC(z)
y2=vS(z)
图=pylab.图()
ax=图添加_子批次(111)
ax.绘图(z,y,'r')
ax.图(z,y2,'b')
pylab.图例(“$C(z)$”、“$S(z)$”),loc=0)
pylab.xlim(-50,0))
pylab.ylim((0,12))
pylab.xlabel(“$z$”)
pylab.gca()
savefig('stumpfneg50to0.eps',格式='eps')
图2=pylab.图()
ax2=图2.添加子批次(111)
ax2.绘图(z,y,'r')
ax2.绘图(z,y2,'b')
pylab.图例(“$C(z)$”、“$S(z)$”),loc=1)
pylab.xlim((0,30))
pylab.ylim((0,0.5))
pylab.xlabel(“$z$”)
pylab.gca()
savefig('stumpf0to30.eps',格式='eps')
图3=pylab.图()
ax3=图3.添加子批次(111)
ax3.绘图(z,y,'r')
ax3.绘图(z,y2,'b')
pylab.图例(“$C(z)$”、“$S(z)$”),loc=0)
pylab.xlim((0500))
pylab.ylim((0,0.05))
pylab.xlabel(“$z$”)
pylab.gca()
savefig('stumpf0to500.eps',格式='eps')
pylab.show()

然后,可以使用
import stumpf
,也可以使用
stumpf.C(z)
stumpf.S(z)
。如果您希望能够在前面没有
stumpf
的情况下使用它们,那么请使用stumpf import*中的
,或stumpf import C,S中的

谢谢,我将尝试一下,如果可行的话,我会将其视为可接受。
import stumpff