Как получить родительский каталог с помощью fsspec?

Учитывая путь к файлу, как мне получить родительский каталог, содержащий файл, с помощью? Filepath может использовать локальную файловую систему или облачное хранилище, поэтомуfsspecявляется предпочтительным.

2 ответа

@Timur правильно указывает, что пути являются просто строками, и вы можете манипулировать ими напрямую.

Однако любая файловая система также реализует_parentclass, который даст вам нормализованную версию родительского каталога (нормализованный означает удаление протокола и хоста, преобразование окон в posix и т. д., и в принципе может зависеть от бэкэнда).

      fs = fsspec.filesystem("s3")
parent = fs._parent("s3://bucket/prefix/path")
assert parent == "bucket/prefix"

Мы также намерены реализовать файловую систему.pathатрибут, чтобы обеспечить удобные функции, подобные os.path, специализированные для рассматриваемой файловой системы.

реализует операции с файловой системой, а пути — это просто строки. Итак, вам не нужноfsspecманипулировать путями. Вы можете использовать Path.resolve или просто os.path.abspath , и они не требуют доступа к самой файловой системе. Например:

      >>> os.path.abspath("/foo/bar/..")
'/foo'

Если вам нужно проверить, действительно ли существует разрешенный родительский путь, здесь вы должны использовать fsspec.spec.AbstractFileSystem.exists , который фактически сделает запрос к базовой файловой системе.

См. также этот вопрос: python: как получить абсолютный путь для родительского каталога

Другие вопросы по тегам