flybywire
flybywire

Reputation: 273922

easiest way to program a virtual file system in windows with Python

I want to program a virtual file system in Windows with Python.

That is, a program in Python whose interface is actually an "explorer windows". You can create & manipulate file-like objects but instead of being created in the hard disk as regular files they are managed by my program and, say, stored remotely, or encrypted or compressed or versioned, or whatever I can do with Python.

What is the easiest way to do that?

Upvotes: 12

Views: 5818

Answers (5)

Tobias Kienzler
Tobias Kienzler

Reputation: 27443

You might be interested in PyFilesystem;

A filesystem abstraction layer for Python

PyFilesystem is an abstraction layer for filesystems. In the same way that Python's file-like objects provide a common way of accessing files, PyFilesystem provides a common way of accessing entire filesystems. You can write platform-independent code to work with local files, that also works with any of the supported filesystems (zip, ftp, S3 etc.).

What the description on the homepage does not advertise is that you can then expose this abstraction again as a filesystem, among others SFTP, FTP (though currently disfunct, probably fixable) and dokan (dito) as well as fuse.

Upvotes: 2

Chui Tey
Chui Tey

Reputation: 5574

Have a look at Dokan a User mode filesystem for Windows. There are Ruby, .NET (and Java by 3rd party) bindings available, and I don't think it'll be difficult to write python bindings either.

Upvotes: 4

Alex Martelli
Alex Martelli

Reputation: 882421

While perhaps not quite ripe yet (unfortunately I have no first-hand experience with it), pywinfuse looks exactly like what you're looking for.

Upvotes: 10

Ken
Ken

Reputation: 5581

Does it need to be Windows-native? There is at least one protocol which can be both browsed by Windows Explorer, and served by free Python libraries: FTP. Stick your program behind pyftpdlib and you're done.

Upvotes: 4

choudeshell
choudeshell

Reputation: 514

If you are trying to write a virtual file system (I may misunderstand you) - I would look at a container file format. VHD is well documented along with HDI and (embedded) OSQ. There are basically two things you need to do. One is you need to decide on a file/container format. After that it is as simple as writing the API to manipulate that container. If you would like it to be manipulated over the internet, pick a transport protocol then just write a service (would would emulate a file system driver) that listens on a certain port and manipulates this container using your API

Upvotes: 2

Related Questions