В моем коде у меня есть функция 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) способ принять файловый объект или строку в функцию, которая выполняет чтение текста?