这是你想要的吗?
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,它将其作为一个新文件打开它
您可以传递任何类似文件的对象作为print的文件参数,这有什么问题? – 2011-05-01 19:01:23
hwo可以通过字符串传递吗?当以字符串存储sys.stdout /文件时,它将写入AttributeError:'str'对象没有属性'write'。不知道如何将其转换为类似文件的对象 – Blackie123 2011-05-01 19:07:04
当然,您需要先打开它。行为取决于模式:http://docs.python.org/py3k/library/functions.html#open – 2011-05-01 19:07:13