File-подобные объекты - это объекты в Python, которые ведут себя как настоящий файл, например. имеют метод read() и write(), но имеют другую реализацию. Это и реализация концепции StringIO или объект Socket может использоваться вместо реального файла. Так что плохо выполнить такую проверку:
if not isinstance(fp, file):
raise something
Каков наилучший способ проверить, является ли объект (например, параметр метода) "файлоподобным"?