【Python】標準出力リダイレクトピット
1902 ワード
出力内容が多すぎてコンソールに直接印刷できない場合があるので、指定したファイルに出力を印刷することを考慮します.
方法1:標準出力をファイルハンドルに割り当て、使用が完了したら閉じます.
長所:理解が簡単
欠点:
1、ファイルを消す操作を忘れがち
2、出力部が非同期取得の関数である場合、ファイルを閉じ、標準出力をリセットするには、非同期取得データの後にしなければならない.
質問:
1、標準出力をリセットしないとどうなりますか?プログラムが終了すると一時オブジェクトが解放されます.
2、ファイルを閉じないと何が起こる?Pythonはプログラム終了後のある時点でファイルを閉じ、複数のプロセスでファイルを読み書きするとエラーが発生する可能性があります.
使用方法1:複数の方法でファイルを書き込みすると、競合が発生する可能性があります.反発ロックを使用して回避する必要があります.
方法2:print()のパラメータfileを直接使用して出力ファイルを指定します.
この方法はwithとprintのパラメータを直接使用して標準出力のリダイレクトを完了し、withは自動的にファイルの閉じることができ、標準出力のリダイレクト操作には関与しない.
printの各パラメータ分析:
*values:印刷する値
sep='',各値の区切り方を定義し,デフォルトはスペースである.
end=’’,printに値が入力された後の記号,デフォルトは改行であり,他の記号を設定できる.
file=sys.stdout、printの中の内容を印刷する必要がある場所、1つのファイルを指定することができて、デフォルトは標準の出力です
flush=Falseです.このパラメータは主にリフレッシュされ、デフォルトのFalseはリフレッシュされないことを示します.通常、printからfのコンテンツはメモリに格納され、ファイルが閉じたときに指定されたファイルに出力され、flush=Trueがすぐにファイルにリフレッシュされます.
方法3:Pythonで提供されているlogモジュールを使用する
logモジュールによれば、印刷する必要がある情報をファイルに表示できます.
方法1:標準出力をファイルハンドルに割り当て、使用が完了したら閉じます.
output = sys.stdout
outputfile = open('test.txt', 'a')
sys.stdout = outputfile
print('hello')
outputfile.close()
sys.stdout=output # !
長所:理解が簡単
欠点:
1、ファイルを消す操作を忘れがち
2、出力部が非同期取得の関数である場合、ファイルを閉じ、標準出力をリセットするには、非同期取得データの後にしなければならない.
質問:
1、標準出力をリセットしないとどうなりますか?プログラムが終了すると一時オブジェクトが解放されます.
2、ファイルを閉じないと何が起こる?Pythonはプログラム終了後のある時点でファイルを閉じ、複数のプロセスでファイルを読み書きするとエラーが発生する可能性があります.
使用方法1:複数の方法でファイルを書き込みすると、競合が発生する可能性があります.反発ロックを使用して回避する必要があります.
方法2:print()のパラメータfileを直接使用して出力ファイルを指定します.
with open('test.txt', 'a') as f:
print('hello', file=f,flush=True)
この方法はwithとprintのパラメータを直接使用して標準出力のリダイレクトを完了し、withは自動的にファイルの閉じることができ、標準出力のリダイレクト操作には関与しない.
printの各パラメータ分析:
print(*values,sep=' ',end='
',file=sys.stdout,flush=Flase)
*values:印刷する値
sep='',各値の区切り方を定義し,デフォルトはスペースである.
end=’’,printに値が入力された後の記号,デフォルトは改行であり,他の記号を設定できる.
file=sys.stdout、printの中の内容を印刷する必要がある場所、1つのファイルを指定することができて、デフォルトは標準の出力です
flush=Falseです.このパラメータは主にリフレッシュされ、デフォルトのFalseはリフレッシュされないことを示します.通常、printからfのコンテンツはメモリに格納され、ファイルが閉じたときに指定されたファイルに出力され、flush=Trueがすぐにファイルにリフレッシュされます.
方法3:Pythonで提供されているlogモジュールを使用する
logging.basicConfig(filename='log.log',
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
level=10)
logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')
logging.log(10,'log')
logモジュールによれば、印刷する必要がある情報をファイルに表示できます.