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