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

发布于 2024-11-04 13:57:19 字数 278 浏览 1 评论 0原文

我正在尝试创建一个 scipr ,它可以在标准输出或文件中写入。是否可以通过相同的代码片段写入每个文件,而不是使用 stdou 的 print 和文件的 io.write() ?

两者的示例:

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

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

I am trying to create a scipr which would enable either writing on stdout or in file. Is it somehow possible to write to each via the same snippet instead of using print for stdou and io.write() for files?

Examples of both:

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

and

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

帥小哥 2024-11-11 13:57:19

这是你想要的吗?

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,它会打开它作为一个新文件

is this what you want?

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

I think I understand, maybe this:

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

with this you can pass the string 'sys.stdout' to the function and it will first try to take it as a file (from system or previously opened), if it raises a NameError, it opens it as a new file

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文