我想要一个函数,可以将数据写入文件:
def data_writer(data, file_name):
spiffy_data = data # ...
with open(file_name, 'w') as out:
out.write(spiffy_data)
但有时,我有一个文件对象而不是文件名。在本例中,我有时有一个tempfile.TemporaryFile
(它创建了一个类似文件的可写对象)。你知道吗
我想写一些东西,比如:
def data_writer(data, file_thing):
spiffy_data = data # ...
if type(file_thing) is file_like:
file_thing.write(spiffy_data)
else:
with open(file_name, 'w') as out:
out.write(spiffy_data)
有什么好办法?你知道吗
另外,在Python中这样做有意义吗?你知道吗
一个函数应该做一件事,并且把这件事做好。在
data_writer
的情况下,一件事就是将数据写入类似文件的对象。让调用者担心提供这样的对象。也就是说,您还可以以包装器的形式提供调用程序,该包装器采用文件名并为data_writer
打开它。你知道吗虽然您的方法是^{} ,但假设它是^{} 是pythonic。所以你可以
try
来write()
到您收到的file_thing
或open()
它和
except
一个潜在的异常,取决于您感觉更好的是代表默认情况。你知道吗编辑:CfShadowRanger's comment了解为什么将异常处理与上下文管理器混合在一起是相当不合法的。你知道吗
相关问题 更多 >
编程相关推荐