python:将发出的命令存储在日志文件中

时间:2012-09-14 21:33:38

标签: python command-line-arguments logfiles

我正在执行一个包含不同参数的程序。我需要在命令行中准确跟踪程序提供的参数。我正在维护一个日志文件,我需要存储这些已发出的命令alogwith结果的摘要。

例如,我可以在不同的时间发出以下命令。

$python myprog.py -i input.txt -o output.txt -x 2 -y 3 -z 9
$python myprog.py  input.txt -o output.txt -x 2  -z 9
$python myprog.py -i input.txt -o output.txt -x 2 -y 3 
$python myprog.py -i input.txt -o output.txt  -z 9

如何将这些命令存储到我的日志文件中?

我这样做是因为我可能需要使用完全相同的选项重新执行相同的程序。

3 个答案:

答案 0 :(得分:2)

您可以使用模块sys将所有参数作为列表argv获取。 要将它们记录到文本文件,您可以使用以下代码:

import sys
logfile = open("logfile.txt", "w")
logfile.write(" ".join(sys.argv))
logfile.close()

答案 1 :(得分:2)

您可以使用logging module

import logging
import sys
logger = logging.getLogger(__name__)

if __name__ == '__main__':
    logging.basicConfig(filename = '/tmp/command.log', level = logging.INFO,
                        format = '%(asctime)s %(message)s',
                        datefmt = '%Y-%m-%d %H:%M:%S')

    logger.info(sys.argv)

答案 2 :(得分:0)

您可以从sys.argv捕获程序中的参数,并将它们附加到日志文件中。

import datetime
import sys
if __name__ == '__main__':
    now = datetime.datetime.now().ctime()
    with open('logfile', 'a') as log:
        log.write("Invoked at %s with args: %s\n" % (now, sys.argv)