python: 多次执行 .py 文件?

-1 投票
3 回答
8608 浏览
提问于 2025-04-18 18:45

我有大约50行代码,这些代码没有使用任何循环变量(所以我不能用for循环),但我想多次运行这些代码,这样我的输出数组就能不断增加长度。有没有办法做到这一点?我想执行这个.py文件10,000次。请告诉我怎么做。我知道通常我会在终端输入

execfile('filename.py')

来执行它,但我该怎么做才能执行多次呢?谢谢!

比如说,我的.py文件里有一些分布,我想计算卡方值,并在10,000次迭代后把所有的值保存在一个数组chi = []里,我该怎么做呢?

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)

3 个回答

1

如果你不想同时执行这个文件,最简单的方法就是使用:

在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 文件并传入参数类似,但有个好处就是它会给你 IPython 的错误追踪信息,并且会把所有变量加载到你的交互命名空间中,方便后续使用(除非使用了 -p,具体见下文)。

这个文件在一个最初只包含 name=='main' 和 sys.argv 的命名空间中执行。这样,它就像是作为一个独立程序运行一样看待自己的环境(除了共享一些全局对象,比如之前导入的模块)。但是在执行完后,IPython 的交互命名空间会更新,包含程序中定义的所有变量(除了 name 和 sys.argv)。这让你在进行交互式工作时可以很方便地加载代码,同时给每个程序一个“干净的环境”来运行。

2

在编程中,有时候我们会遇到一些问题,想要找到解决方案。比如说,有人可能在使用某个工具或库时,遇到了错误或者不明白怎么用。这种情况下,大家通常会去StackOverflow这样的论坛上提问,寻求帮助。

在这些论坛上,其他程序员会分享他们的经验和解决办法。有时候,问题的解决方案可能涉及到一些代码示例,帮助提问者更好地理解如何解决问题。

总之,StackOverflow是一个很好的地方,可以让程序员们互相帮助,分享知识和经验。

for i in range(10000):
  execfile("filename.py")
3

我不太明白你为什么觉得这里用循环不行;如果你想让你的 chi 变量里面有一万条数据,你只需要把文件最后几行改成:

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

撰写回答