在python脚本中将数值记录为中间输出

时间:2015-03-28 21:58:47

标签: python debugging logging numeric

我有一个计算某些数学函数的函数。在调试中我想

mylib.py

def function(a, b, c):
    """
    compute a numerical function of a, b, c 
    using complex math functions g, h
    """
    d = g(a)
    e = h(b, c)

    return d*sin(e)

在main中,此函数被多次调用

main.py

for a in range(0, 50):
   print d*e

该函数没有返回我的预期,我想看看中间变量d,e如何因不同的参数而变化。

我已经添加了简单的打印语句(print d,print e)来实现功能,但这并不方便,因为我想为a的每个值绘制d和e。有没有办法将d和e写入文件,以便在运行main.py之后我可以轻松加载输出并制作一个情节?

我也试过

def function(a, b, c):
    """
    compute a numerical function of a, b, c 
    using complex math functions g, h
    """
    d = g(a)
    e = h(b, c)
    logging.debug(str(d)+','+str(e))

    return d*sin(e)

logging.basicConfig(filename='test.log',level=logging.DEBUG)
for a in range(0.0, 50.0):
   print d*e

但我无法在任何地方找到日志文件。

干杯,迈克

1 个答案:

答案 0 :(得分:0)

是的,有一种方法可以写入文件。

但首先,您确定for a in range(0.0, 50.0):是否正确? range()接受整数值,而不是float。

无论如何,试试这段代码,使用:

def function(a, b, c):
    """
    compute a numerical function of a, b, c 
    using complex math functions g, h
    """
    d = g(a)
    e = h(b, c)
    with open('log.txt', 'w+') as mfile:
        mfile.write('d: '+ str(d)+ " e: "+ str(e))

    return d*sin(e)

将此.py放在一个文件夹中,然后通过终端运行。日志将在同一文件夹中创建。