2013-05-19 68 views
0

所以我有一個程序,它的.TXT數據(整數集),使得導致一個新的列表中的每個n個數字(師),期權和看跌期權的總和。然後它創建了該列表的條形圖。自動化現有的Python程序

到目前爲止它工作得很好。唯一的問題是,我想它使程序做這一切,沒有我不必手動輸入我想它分割數,使:\

我想它經歷讓說一個循環,它會將分區分配到10,11,12 ...到我喜歡的任何數字,然後將它們全部放在一個列表中,然後我將得到多個列表,然後我可以轉移到excell,來源,或任何其他程序,並在那裏做我的分析。

我會把程序,沒有繪製的一部分,我已經詢問了一些額外的東西:

# -*- 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 

所以我基本上是想有nsmp在for循環中,從某些值的某些值(例如10-15,在25間隔步驟中爲20-50,等等)。

這是可行的嗎?

也有在python導出結果的一種簡單的方法?我搜遍了一切,但沒有發現像loadtxt那麼簡單。

這裏的.txt文件:https://dl.dropboxusercontent.com/u/55620972/mion-090513-1.txt

回答

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腳本中使用它。

+0

哦哦這看起來很先進:DI現在用它主要是爲了縮短我的數據分析:)我給它一個去看看什麼出來的那樣:d謝謝:) –

+1

不就是先進的,只是一些好的做法真的回報 –