簡體   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