В моем коде у меня есть функция load_dataset
, которая читает текстовый файл и выполняет некоторую обработку. Недавно я подумал о добавлении поддержки к объектам, похожим на файлы, и задумался над лучшим подходом к этому. В настоящее время я имею в виду две реализации:
Во-первых, проверка типа:
if isinstance(inputelement, basestring):
# open file, processing etc
# or
# elif hasattr(inputelement, "read"):
elif isinstance(inputelement, file):
# Do something else
В качестве альтернативы, два разных аргумента:
def load_dataset(filename=None, stream=None):
if filename is not None and stream is None:
# open file etc
elif stream is not None and filename is None:
# do something else
Однако оба решения меня не особо убеждают, особенно второе, поскольку я вижу слишком много подводных камней.
Какой самый чистый (и самый Pythonic) способ принять файлоподобный объект или строку в функцию, выполняющую чтение текста?