Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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:多次执行.py文件?_Python_Loops_Execute - Fatal编程技术网

python:多次执行.py文件?

python:多次执行.py文件?,python,loops,execute,Python,Loops,Execute,我有大约50行代码,这不是基于任何循环变量的,这就是为什么我不能执行for循环,但我想运行这段代码几次,以便我的输出数组的长度不断增加。有办法吗?我想执行这个.py文件10000次。让我知道我该怎么做。我知道通常我会在终端上通过键入 execfile'filename.py' 但如何做到几次呢? 谢谢大家! .py文件中的示例:假设我有一组分布,我想计算chi sq值,并将所有值保存在数组chi=[]中,在10000次迭代之后,在这种情况下我该如何做 chi = [] def chisqg(yd

我有大约50行代码,这不是基于任何循环变量的,这就是为什么我不能执行for循环,但我想运行这段代码几次,以便我的输出数组的长度不断增加。有办法吗?我想执行这个.py文件10000次。让我知道我该怎么做。我知道通常我会在终端上通过键入

execfile'filename.py'

但如何做到几次呢? 谢谢大家!

.py文件中的示例:假设我有一组分布,我想计算chi sq值,并将所有值保存在数组chi=[]中,在10000次迭代之后,在这种情况下我该如何做

chi = []
def chisqg(ydata,ymod,sd=None):  

    if sd==None:  
        chisq=np.sum((ydata-ymod)**2)  
    else:  
        chisq=np.sum( ((ydata-ymod)/sd)**2 )  
    return chisq

chi1 = chisqg(y1,mod1,sd=0.1)
chi.append(chi1)

我不知道你为什么认为循环在这里行不通;如果希望chi变量中包含10k个条目,只需将文件的最后几行更改为:

for i in range(10000):
    chi1 = chisqg(y1,mod1,sd=0.1)
    chi.append(chi1)

如果不希望同时执行文件,则最简单的方法是使用:

在windows上:

for x in range(0, 30):
    %run -i "insert_your_file.py"
在Linux或OsX上

for x in range(0, 30):
    %run -i 'insert_your_file.py'
***是的,双引号很重要

有关%run的详细信息,请执行以下操作:

这类似于在系统提示符下运行python文件args,但其优点是提供IPython的回溯,并将所有变量加载到交互式命名空间中以供进一步使用,除非使用-p,请参见下文


该文件在名称空间中执行,最初仅由name=='main'和sys.argv组成,如图所示构造。因此,除了共享全局对象(如以前导入的模块)外,它将其环境视为作为独立程序运行。但是在执行之后,IPython交互名称空间将使用程序中定义的除name和sys.argv之外的所有变量进行更新。这允许非常方便地加载用于交互工作的代码,同时为每个程序提供一个“干净的工作表”来运行。

您是否有一个y1、mod1等值的列表,以便运行您的函数?那些是从哪里来的?当它运行10k次时,只会得到相同的值。旁白:这是怎么回事?这是一个合理的初学者问题。什么样的反对票?我不知道你在说什么。是的,y1,mod1基本上是np随机正态分布函数。只需要收集chi-sq值,将两者进行10000次的比较。哦,你是说反对票?是的,我总是因为提问而在stack overflow上丢分,我猜社区并不欢迎初学者:“不清楚为什么你认为你不能使用循环。当提问者似乎没有自己解决问题时,这个网站上有一种做作业或帮助的厌恶感,但是对于刚开始工作的人来说,这可能是不必要的苛刻。但是我应该在哪里使用全局变量I呢?没有要求实际使用循环索引。这段代码将简单地迭代10000次,而不是每次迭代都实际查看i的值。因此我尝试了这个方法,但似乎最终数组chi只得到一个值,而不是10000个值。我该如何实现这一目标?哦,我现在明白你想做什么了。我认为tzaman的答案是正确的。你应该用uu表示一次性变量。好的,太棒了!!我稍微调整了一下,但这个想法奏效了!非常感谢你!
for x in range(0, 30):
    %run -i 'insert_your_file.py'