当前位置: 首页 > 知识库问答 >
问题:

Python:包含错误的控制台和文本文件的stdout

贲高寒
2023-03-14

我想将python的输出打印到控制台和一个包含错误(如果有的话)的文本文件。

到目前为止,我的尝试是:

# 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
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")
subprocess.call('./hello')
# How to print output of this executable to both console and outputfile?

注意:生成可执行文件hello的代码

// gcc -o hello hello.c
#include<stdio.h>

int main() {
    printf("hello\n");
return 0; }

相关链接:
如何使用python将“print”输出重定向到文件?
http://linux.byexample.com/archives/349/how-to-redirect-output-to-a-file-as-well-as-display-it-out/
使用python在控制台和文件上输出

共有1个答案

督辉
2023-03-14

如果您使用的是bash(最低版本4),则可以运行:./mystdout&tee output.txt。否则,您的建议./mystdout 2>&1 tee output.txt也应该起作用。

 类似资料:
  • 问题内容: 我从互联网上找到了下面的代码,可以正常工作,但是它没有将打印控制台写入omt.txt,它仅在第二个catch块之后写入语句。如果您运行该代码,则将理解我的意思。要做的就是将控制台上的所有内容写入“ omt.txt”文件中。 经过一番回答后,我发现我的问题不清楚,对此感到抱歉。我想将控制台输出保存到omt.txt文本文件。如果在控制台上打印了“ Hello 123”,它也应该在omt.t

  • 是否有一种方法可以在setuptools安装程序中找到与console_脚本等效的脚本。将其转换为需求。txt文件用于pip安装-r要求。txt。 我打算从一个不受信任的ssl服务器安装一个包。到目前为止,只有通过设置才能使其正常工作。py文件是这样的 其中gitlab服务器在安装程序中具有自签名证书。我有一些控制台脚本。

  • 我想制作一个Rust包,它既包含一个可重用库(大部分程序都在这里实现),也包含一个使用它的可执行文件。 假设我没有混淆 Rust 模块系统中的任何语义,我的 文件应该是什么样子的?

  • 问题内容: 我有一段简单的代码将控制台文本输出到Java中的文本文件: 但是,我要求此文本文件包含控制台中生成的错误消息,但不包括这些错误消息。 我该怎么做呢? 问题答案: 加: 在末尾。

  • 在我的项目(在Netbeans 8中创建)中,我们必须创建一个war文件,并从Glassfish 4.1管理控制台部署到不同的机器上。 同样的过程,即从Glassfish 4.1(从Netbeans 8打开)部署war文件,在我们开发项目的本地机器上运行良好(在Netbeans中)。

  • 问题内容: 我编写了一个简单的控制台应用程序,使用ftplib从FTP服务器上载和下载文件。 我希望该应用程序向用户展示其下载/上传进度的一些可视化;每次下载数据块时,我都希望它提供进度更新,即使它只是数字表示形式(如百分比)。 重要的是,我要避免擦除在前几行中已打印到控制台的所有文本(即,我不想在打印更新的进度时“清除”整个终端)。 这似乎是一项相当普通的任务-如何在保留先前程序输出的同时,制作