Как получить родительский каталог с помощью fsspec?
Учитывая путь к файлу, как мне получить родительский каталог, содержащий файл, с помощью? Filepath может использовать локальную файловую систему или облачное хранилище, поэтомуfsspec
является предпочтительным.
2 ответа
@Timur правильно указывает, что пути являются просто строками, и вы можете манипулировать ими напрямую.
Однако любая файловая система также реализует_parent
class, который даст вам нормализованную версию родительского каталога (нормализованный означает удаление протокола и хоста, преобразование окон в 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: как получить абсолютный путь для родительского каталога