pythonの出力をコンソールとエラーのあるテキストファイルの両方に出力したいと思います。Python:コンソールとテキストファイルの両方にstdoutを含むエラー
これまでのところ、私の試みが、これらは以下のとおりです。コンソールを使用し
:ファイルへ
# mystdout.py
# note that it has missing) sign
print("hello
# in the terminal:
chmod a+x mystdout.py; ./mystdout.py 2>&1 | tee output.txt
# does not print to oputut.txt if mystout.py has syntax errors
印刷(のpython3):「ティーと呼ばれるクラスを定義
with open('out.txt', 'a') as f:
print('hello world', file=f)
# this does not print to console, only to the file
"
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author : Bhishan Poudel
# Date : Jul 12, 2016
# Imports
import sys
import subprocess
##=============================================================================
class Tee(object):
def __init__(self, *files):
self.files = files
def write(self, obj):
for f in self.files:
f.write(obj)
f.flush()
def flush(self) :
for f in self.files:
f.flush()
f = open('out.txt', 'w')
original = sys.stdout
sys.stdout = Tee(sys.stdout, f)
##=============================================================================
print('This works good, prints all the output to both console and to a file')
print("This does not print output to file in case of syntax errors")
print("This does not print output of subprocess.call")
質問 と仮定私は(ハロー印刷するCプログラムから)
subprocess.call('./hello')
# How to print output of this executable to both console and outputfile?
注実行を持っている:
How to redirect 'print' output to a file using python?:コードが実行ハロー
// gcc -o hello hello.c
#include<stdio.h>
int main() {
printf("hello\n");
return 0; }
関連リンクを生成します
http://linux.byexamples.com/archives/349/how-to-redirect-output-to-a-file-as-well-as-display-it-out/
Output on the console and file using python
あなたのPythonスクリプトは、シェバングを持っていません。どのようにしてシステムはPythonでそれを実行させると考えていますか? – jpmc26
@ jpmc26、私のpythonスクリプトは、スクリプトの最上位にある#!/ usr/bin/env pythonのshebangを持っていますか?#/ usr/bin/python? –
この質問の 'mystdout.py'スクリプトには例がありません。使用する適切なものは、環境構成によって異なります。 – jpmc26