pythonログの出力

9945 ワード

方法1:
import sys

class Logger(object):
    def __init__(self, filename='default.log', stream=sys.stdout):
        self.terminal = stream
        self.log = open(filename, 'a')  # add content

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)

    def flush(self):
        pass


# now it works
sys.stdout = Logger('a.txt', sys.stdout)

print('print something')

import time
for i in range(10):
    now = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))  # get time
    print("now-->", now)  #         ,             
    time.sleep(1)  #   1   

説明:
  • print()行の内容が超長い場合(例えば、長いJSON形式のテキスト)ファイルの内容が不完全に表示され、長さ制限があり、ある点で自動的になくなります.すなわち,この方法では単行テキストに長さ制限がある.具体的な参考:セキュリティ開発/Python–29–コンソールの内容をローカルファイルに出力する
  • 方法2:
    mylog = open('a.txt', mode='a', encoding='utf-8')  #           
    
    print("now we will start!!!")  #       
    print("now we will start!!!", file=mylog)  #          
    
    import time
    for i in range(10):
        now = time.strftime('%Y%m%d_%H%M%S', time.localtime(time.time()))
        print("now --> {} 
    "
    .format(now), file=mylog) time.sleep(1) print(time.time()) mylog.close() #

    あるいはこう書く(すべてlogファイルに出力するだけ)
    
    sys.stdout = open('a.txt', mode='a', encoding='utf-8')  #           
    
    print("now we will start!!!")  #          
    
    import time
    for i in range(10):
        now = time.strftime('%Y%m%d_%H%M%S', time.localtime(time.time()))
        print("now --> {} 
    "
    .format(now)) time.sleep(1) print(time.time())

    方法3:
    端末で実行され、例えば:python your_program.py > logger.txt