我需要将所有打印语句输出到终端和文件.我在这个stackoverflow问题中找到了一个解决方案, 所以我使用
class Tee(object):
def __init__(self, name):
self.file = open(name, "a")
self.stdout = sys.stdout
sys.stdout = self
def __del__(self):
sys.stdout = self.stdout
self.file.close()
def write(self, data):
self.file.write(data)
self.stdout.write(data)
sys.stdout = Tee("log.txt")
Run Code Online (Sandbox Code Playgroud)
这很棒,
我的问题是当我想停止写入文件并返回正常操作时,只打印到终端
我试图使用del(sys.stdout)来调用del方法而没有运气.
我甚至试图将最后一行更改为:
multiple_print = Tee("log.txt")
sys.stdout = multiple_print
Run Code Online (Sandbox Code Playgroud)
而且使用del(multiple_print)并失败
无论我尝试了什么,进一步使用打印仍然写入终端和文件两者.
有任何想法吗?
我有几个可选参数,其中一个需要存储多个值 - 即它的类型既不是字符串也不是整数。argparse 是否支持其他类型的可选参数?
例如,我想要这个命令:
>>> python example1 test_project --name try1 3
Run Code Online (Sandbox Code Playgroud)
相当于这样的代码:
args.name = {'try1', '3'}
Run Code Online (Sandbox Code Playgroud)
这可能吗?或者,action='store_true'如果他选择此选项,我是否会被迫使用然后提示用户提供更多信息?