繁体   English   中英

自动化现有的python程序

[英]Automating already existing python program

因此,我有一个程序可以接收.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开始,以25个间隔的步长从20-50开始,等等)。

那东西可行吗?

还有在python中导出结果的简单方法吗? loadtxt搜索,但没有发现像loadtxt这样的loadtxt

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

为了使程序易于自动化和可重用,您可以做两件事。

将核心功能(例如,计算)与执行分开。 您可以将计算放到一个单独的模块中,然后通过“ 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 另外,包含main句也是一个很好的习惯

def main():
    ....

if __name__ == "__main__"
    main()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM