3

これについてあなたの頭脳を選びたかっただけです。いくつかのサブプロセスを実行しており、stderr と stdout をファイルに出力したいと考えていました。私はこれまでこれを行ってきました:

def write_to_stderr_log(process):
    stderr= open("stderr.log", "w")
    proc_err = process.communicate()
    print >> stderr, proc_err
    stderr.close()

def write_to_stdout_log(process):
    stdout = open("stdout.log", "w")
    proc_out = process.communicate()
    print >> stdout, proc_out
    stdout.close()

def logger():
    logger = logging.getLogger('error_testing')
    hdlr = logging.FileHandler('error.log')
    formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
    hdlr.setFormatter(formatter)
    logger.addHandler(hdlr)
    logger.setLevel(logging.WARNING)

    logger.error('We have a problem')
    logger.debug('debugging')
    logger.info('some info')

logger()
proc = subprocess.Popen(['FastTree -nt test.fasta'], bufsize=512, stdin = None, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True) 

write_to_stderr_log(proc)
write_to_stdout_log(proc)

これはこれを行うための最良の方法ですか?複数のプロセスがある場合、ログ ファイルが書き直されるので、問題になる可能性があります。ここでいくつかのアドバイスに感謝します。ありがとう

4

1 に答える 1