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 に答える