[英]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.