是否可以通过Python中的常规打开/写入来访问stdout

时间:2011-05-01 18:58:32

标签: python file-io stdout

我正在尝试创建一个scipr,它可以在stdout或文件中写入。是否有可能通过相同的代码段写入每个代码而不是使用print for stdou和io.write()来获取文件?

两者的例子:

out_file = open("test.txt", "wt")
out_file.write("Text")
out_file.close()

print("Text", file=sys.stdout)

1 个答案:

答案 0 :(得分:1)

这就是你想要的吗?

from __future__ import print_function, with_statement
def my_print(text, output):
    if type(output) == str:
        with open(output, 'w') as output_file:
            print(text, file=output_file)
    elif type(output) == file:
        print(text, file=output)
    else:
        raise IOError

我想我明白了,也许是这样:

from __future__ import print_function, with_statement
def my_print(text, output):
    if type(output) == str:
        try:
            output_file = eval(output)
            assert type(output_file) == file
        except (NameError, AssertionError):
            output_file = open(output, 'w')
        print(text, file=output_file)
        output_file.close()
    elif type(output) == file:
        print(text, file=output)
    else:
        raise IOError

这样你可以将字符串'sys.stdout'传递给函数,它会首先尝试将其作为文件(来自系统或以前打开过),如果它引发了NameError,它会将其作为新文件打开