提问者:小点点

将控制台中的所有内容重定向到日志文件,包括“输入”和“os.system”功能


我的问题类似于将打印重定向到日志文件

当我去年开始用Python编码时,直到现在我才知道日志记录。问题是代码越来越大。

我一直在尝试给出的解决方案,但没有一个能正常工作,因为此代码包含input()print()、和os。系统()

最接近的解决方案是他在回答如何复制sys时使用的shx2。日志文件的标准输出?

假设这就是代码

import os, 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("\nWhat is your name: ")
print("Your name is",name)

age = input("\nHow old are you: ")
print("You're ",age)

print("\nYour IP Address is: ")
os.system('ipconfig | findstr IPv4')

控制台输出

C:\>python script.py

What is your name: ABC
Your name is ABC

How old are you: 10
You're  10

Your IP Address is:
   IPv4 Address. . . . . . . . . . . : 127.0.0.1

C:\>

打印控制台的输出被重定向到日志。txt没有任何问题,但不是输入操作系统。系统

log.txt输出

What is your name: Your name is ABC

How old are you: You're  10

Your IP Address is: 

是否有可能将控制台上的所有内容(完全相同)都记录到log。txt


共1个答案

匿名用户

一个选项是将输出重定向到文件

C:\>python script.py > filename.txt

我试过这个,它似乎产生了你想要的。这样做,虽然您不需要输入提示(例如,“您叫什么名字”或“您多大岁数”),但只需要光标的空行。以此图像为例。