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

python:将发出的命令存储在日志文件中,python,command-line-arguments,logfiles,Python,Command Line Arguments,Logfiles,我正在执行一个包含不同参数组合的程序。我需要准确地跟踪命令行中程序提供的参数。我正在维护一个日志文件,需要在其中存储这些发出的命令以及结果摘要 例如,我可能在不同的时间发出以下命令 $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

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

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

$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
如何将这些命令存储到日志文件中


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

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

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

您可以从
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) 
您可以使用:

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)