我正在尝试创建一个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)
答案 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,它会将其作为新文件打开