Skip to main content

Python file and zip operations made easy

Project description

Flametree is a Python library which provides a simple syntax for handling files and folders (no os.path.join, os.listdir etc.), and works the same way for different file systems.

Write a Flametree program to read/write files in disk folders, and your code will also be able to read/write in zip archives and virtual (in-memory) archives - which is particularly useful on web servers.

As an illustration, here is how to use Flametree to read a file texts/poems/the_raven.txt, replace all occurences of the word “raven” by “seagull” in the text, and write the result to a new file the_seagull.txt in the same folder:

from flametree import file_tree

with file_tree("texts") as root:
    poem_text = root.poems.the_raven_txt.read()
    new_text = poem_text.replace("raven", "seagull")
    root.poems._file("the_seagull.txt").write(new_text)

Even in this very simple use case, the syntax is clearer than the os way, which would write as follows:

import os

with open(os.path.join("poems", "the_raven.txt"), "r") as f:
    poem_text = f.read()
new_text = poem_text.replace("raven", "seagull")
with open(os.path.join("poems", "the_seagull.txt"), "w") as f:
    content = f.write(new_text)

Moreover, the same Flametree code also works for files inside a zip archive:

with file_tree("my_archive.zip") as root:
    poem_text = root.poems.the_raven_txt.read()
    new_text = poem_text.replace("raven", "seagull")
    root.poems._file("the_seagull.txt").write(new_text)

Now in hard mode: suppose that your server receives binary zip data of an archive containing poems/the_raven.txt, and must return back a new zip containing a file poems/the_seagull.txt. Here again, the syntax of the core operations is the same:

destination_zip = file_tree("@memory") # Create a new virtual zip
with file_tree(the_raven_zip_data) as root:
    poem_text = root.poems.the_raven_txt.read()
    new_text = poem_text.replace("raven", "seagull")
    destination_zip._dir("poems")._file("the_seagull.txt").write(new_text)
destination_zip_data = destination_zip._close()
# Now send the data to the client

See section Usage below for more examples and features.

Infos

PIP installation:

pip install flametree

Github Page

https://github.com/Edinburgh-Genome-Foundry/Flametree

License: MIT, Copyright Edinburgh Genome Foundry

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flametree-0.1.12.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

flametree-0.1.12-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file flametree-0.1.12.tar.gz.

File metadata

  • Download URL: flametree-0.1.12.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for flametree-0.1.12.tar.gz
Algorithm Hash digest
SHA256 3bb9bbd422fa43c1328dc6afb505b646a2fcf0d55421df327425d4173aaefbca
MD5 ebbd4e3bf8e3c31e6721b5a3a67e07db
BLAKE2b-256 0b43282c5a8a59f024b6b8110832fc6bf65e3ae523f6b6e5392834d415bceadd

See more details on using hashes here.

File details

Details for the file flametree-0.1.12-py3-none-any.whl.

File metadata

  • Download URL: flametree-0.1.12-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for flametree-0.1.12-py3-none-any.whl
Algorithm Hash digest
SHA256 2ecaeeddf8a6f7d75e5c0e5a660b68284c0292daceb9df8a7e662cfff72693b0
MD5 9045fed8dc10be263b2547f67eb3c4b8
BLAKE2b-256 98be2ba7782fa40c5b18efd6a2d5670d53a02cd617c84989a5c5d00b17cb20d0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page