
Show HN: PyFilesystem 2.0 – A Python interface to filesystems of all kinds - billowycoat
https://www.willmcgugan.com/blog/tech/post/announcing-pyfilesystem-2/
======
amyjess
Oh, this looks really nice. Thank you for posting it!

A while back, I had an idea for modelling a filesystem as a dict, so maybe
this will inspire me to get off my ass and actually write it.

Basically, the idea is that this:

    
    
        foo = rootfs['home']['amyjess']['stuff']['foo.txt']
        rootfs['home']['amyjess']['stuff']['bar.txt'] = bar
    

would be equivalent to this:

    
    
        with open('/home/amyjess/stuff/foo.txt', 'r') as foo_file:
            foo = foo_file.read()
        with open('/home/amyjess/stuff/bar.txt', 'w') as bar_file:
            bar_file.write(bar)
    

I really want to implement that now.

~~~
straphka
I once made something like this to mount json files as a fuse filesystem. It's
not maintained and one of my first projects, so the code is somewhat
questionable, but it does work.

It basically mounts a dict on a filesystem, the exact opposite of what you
want :)

[https://github.com/yhekma/datamounter](https://github.com/yhekma/datamounter)

~~~
ekiara
My big question is why? you wanted to navigate or display a JSON dataset using
filesystem-viewer tools? i.e. "Explore" the JSON dataset?

~~~
straphka
Well, mostly because I wanted to play with fuse, but it started out as an
ansible thing (doesn't work with >2 though).

The ansible setup module returns the system information in json, and if you
mount it with the --realtime flag, when you open a "file" like ram for
instance, ansible fetches the current value for you. That way you have your
infrastructure mounted so to speak. Sort of a /proc filesystem for your linux
infrastructure.

I never got further than a working poc though. It works, but there are some
bugs and there is no regard for security.

------
O5vYtytb
pyfilesystem is great!

My only suggestion would be to improve the search optimization for pypi.

It's the ~10th result for
[https://pypi.python.org/pypi?%3Aaction=search&term=pyfilesys...](https://pypi.python.org/pypi?%3Aaction=search&term=pyfilesystem&submit=search)
and a page down on
[https://pypi.python.org/pypi?%3Aaction=search&term=fs&submit...](https://pypi.python.org/pypi?%3Aaction=search&term=fs&submit=search)

It's really not clear what it's called since the package name is 'fs' but the
project is 'pyfilesystem'.

~~~
billowycoat
> pyfilesystem is great!

Cheers.

> My only suggestion would be to improve the search optimization for pypi.

Fair point. Not entirely sure how to fix that. I'll look in to it...

~~~
linsomniac
PKG-INFO, line 2:

Name: fs

Looks like it's also registered in PyPI as "fs", from the URL:
[https://pypi.python.org/pypi/fs/](https://pypi.python.org/pypi/fs/)

~~~
adtac
Maybe have a proxy
[https://pypi.python.org/pypi/pyfilesystem](https://pypi.python.org/pypi/pyfilesystem)
that has `fs` as a requirement? That way even if people install with `pip
install pyfilesystem`, you're good.

~~~
billowycoat
Hmm. That's an idea. Feels like a hack though. Do you know if there is a
precedence for that?

~~~
adtac
We're planning on something similar to move a big open source library
somewhere else (so that dependencies don't break).

------
j_s
As long as you can recursively process folders and files without stopping
early due to an UnauthorizedAccessException-equivalent (which .NET didn't
straighten out 'til v4).

[http://stackoverflow.com/a/2663779](http://stackoverflow.com/a/2663779)

------
teilo
Would this work with any object implementing the PathLike interface introduced
in Python 3.6 ?

~~~
billowycoat
You generally won't need to. PyFilesystem hides the differences between paths
from you
([https://pyfilesystem2.readthedocs.io/en/latest/concepts.html...](https://pyfilesystem2.readthedocs.io/en/latest/concepts.html#paths)).

An exception would be in the constructor for OSFS Objects, which take a system
path. I'll look in to adding support there...

