自动化现有的python程序

时间:2013-05-19 15:56:46

标签: python list automation

所以我有一个程序接受.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,从某些值到某些值(例如在25个间隔步骤中从10-15到20-50,依此类推)。

这件事可行吗?

还有一种在python中导出结果的简单方法吗?我搜查了所有内容但发现没有像loadtxt那样容易。

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

1 个答案:

答案 0 :(得分:1)

为了使您的程序易于自动化并可重复使用,您可以做一些事情。

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

# 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。此外,包含main子句

是一个非常好的习惯
def main():
    ....

if __name__ == "__main__"
    main()

如果您正在设计工具,您还应该定义命令行参数 - argparse非常适合。然后,您可以从shell脚本中轻松使用它。