簡體   English   中英

如何使stdin和stdout輸出同時顯示在控制台和日志文件中?

[英]How to get both stdin and stdout output to be displayed in both console and log file?

以下代碼將輸出輸出到控制台以及log.txt文件。

import sys

class multifile(object):
    def __init__(self, files):
        self._files = files
    def __getattr__(self, attr, *args):
        return self._wrap(attr, *args)
    def _wrap(self, attr, *args):
        def g(*a, **kw):
            for f in self._files:
                res = getattr(f, attr, *args)(*a, **kw)
            return res
        return g

sys.stdout = multifile([ sys.stdout, open('log.txt', 'w') ])

name = input('What is your name: ')
print('Your name is',name)

控制台輸出

C:\>python script.py
What is your name: ABC
Your name is ABC

log.txt文件

What is your name: Your name is ABC

不幸的是,輸入的ABC\\n僅顯示在控制台上,而不顯示在log.txt文件中。

是否可以將所有內容同時log.txt控制台和log.txt文件?

控制台和log.txt文件中都需要輸出

What is your name: ABC
Your name is ABC

我想在控制台和log.txt文件中都獲得類似(精確)的輸出嗎?

如果有更簡便的方法,也請告知我。

不能完全確定這是否是您要查找的內容,但是請在此處查看此問題 希望能有所幫助。

另外,最好再次關閉打開的文件。 因此,如果最終保留了代碼,請執行以下操作

f = open('log.txt', 'w') 
sys.stdout = multifile([ sys.stdout, f])

// do more stuff

f.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM