4

我正在执行一个组合了不同参数的程序。我需要准确跟踪程序在命令行中提供了哪些参数。我正在维护一个日志文件,我需要在其中存储这些发出的命令以及结果摘要。

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

$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

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

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

4

3 回答 3

2

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

import sys
logfile = open("logfile.txt", "w")
logfile.write(" ".join(sys.argv))
logfile.close()
于 2012-09-14T21:37:40.280 回答
2

您可以使用日志记录模块

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)
于 2012-09-14T21:38:24.990 回答
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) 
于 2012-09-14T21:37:58.270 回答