自动化已经存在的python程序

2024-04-20 12:43:12 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我有一个程序,它获取.txt数据(整数集),每n个数字(除数)求和,并将结果放入一个新的列表中。然后它会制作一个列表的条形图。你知道吗

到目前为止效果还不错。唯一的问题是,我希望它能让程序完成所有这些操作,而无需手动输入我希望它完成的分区数:\

我想让它通过一个循环,把除法变成10,11,12。。。我喜欢的任何数字,然后把它都放在一个列表中,我会得到多个列表,然后我可以转移到excell,origin,或任何其他程序,并在那里做我的分析。你知道吗

我会把程序,不包括绘图部分,还有一些额外的东西,我已经问过了:

# -*- coding: cp1250 -*-
from __future__ import division
from numpy import *
from matplotlib import rc
from matplotlib.pyplot import *
import numpy as np
import matplotlib.pyplot as plt


data = loadtxt("mion-090513-1.txt", int)

nuz = len(data)
nsmp = 10
duz = int(nuz/nsmp)

L = []

ukupni_broj=sum(data)

#Summed values calculation#
for i1 in range(0,nsmp):
    suma = 0
    for i2 in range(0,duz):
        suma += data[i1*duz+i2]
    L.append(suma)

print L

print 'Bin number is', len(L)

print 'Total event number is', ukupni_broj

所以我基本上希望在for循环中使用nsmp,从一些值到一些值(例如,从10-15到20-50,在25个间隔步骤中,等等)。你知道吗

那件事可行吗?你知道吗

还有一种简单的方法可以用python导出结果吗?我到处找,但没有找到像loadtxt这样容易的东西。你知道吗

下面是.txt文件:https://dl.dropboxusercontent.com/u/55620972/mion-090513-1.txt


Tags: fromimport程序numpytxt列表fordata
1条回答
网友
1楼 · 发布于 2024-04-20 12:43:12

为了使您的程序易于自动化和可重用,您可以做一些事情。你知道吗

将核心功能(如计算)与执行分开。 您可以将计算放入一个单独的模块中,并从“main”脚本执行它:

# my_processing.py
def process_file(filename, divisions):
   ...

# process_all.py:
import my_processing
filename = "..."
divisions = [10, 20, 100]
my_processing.process_file(filename, divisions)

这样就可以重用my_processing.py。另外,包含^{}子句也是一个非常好的习惯

def main():
    ....

if __name__ == "__main__"
    main()

如果您正在设计一个工具,那么还应该定义命令行参数^{}非常适合这样做。然后您可以从shell脚本轻松地使用它。你知道吗

相关问题 更多 >