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)