{"id":25437681,"url":"https://github.com/nathanhi/pyfatfs","last_synced_at":"2025-11-01T07:30:27.515Z","repository":{"id":43493001,"uuid":"196880102","full_name":"nathanhi/pyfatfs","owner":"nathanhi","description":"Python based FAT12/FAT16/FAT32 implementation with VFAT support","archived":false,"fork":false,"pushed_at":"2024-03-03T20:39:39.000Z","size":321,"stargazers_count":32,"open_issues_count":5,"forks_count":14,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-08T13:40:19.027Z","etag":null,"topics":["8dot3","dosfs","fat","fat12","fat16","fat32","filesystem-library","mtools","pyfilesystem2","python3","vfat"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/pyfatfs/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nathanhi.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-07-14T20:25:29.000Z","updated_at":"2024-11-21T08:37:02.000Z","dependencies_parsed_at":"2024-03-03T20:38:58.678Z","dependency_job_id":null,"html_url":"https://github.com/nathanhi/pyfatfs","commit_stats":{"total_commits":261,"total_committers":7,"mean_commits":"37.285714285714285","dds":0.09195402298850575,"last_synced_commit":"2d6c0fa060f8fba4dba7f9a28a76b9abb943abde"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathanhi%2Fpyfatfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathanhi%2Fpyfatfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathanhi%2Fpyfatfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathanhi%2Fpyfatfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nathanhi","download_url":"https://codeload.github.com/nathanhi/pyfatfs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239262396,"owners_count":19609519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["8dot3","dosfs","fat","fat12","fat16","fat32","filesystem-library","mtools","pyfilesystem2","python3","vfat"],"created_at":"2025-02-17T09:19:10.141Z","updated_at":"2025-11-01T07:30:27.465Z","avatar_url":"https://github.com/nathanhi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":".. image:: https://img.shields.io/github/actions/workflow/status/nathanhi/pyfatfs/test.yml?style=flat-square\n    :target: https://github.com/nathanhi/pyfatfs/actions/workflows/test.yml\n    :alt: CI build status\n.. image:: https://img.shields.io/readthedocs/pyfatfs?style=flat-square\n    :target: https://pyfatfs.readthedocs.io/\n    :alt: Read the Docs\n.. image:: https://img.shields.io/coveralls/github/nathanhi/pyfatfs?style=flat-square\n    :target: https://coveralls.io/github/nathanhi/pyfatfs\n    :alt: Test coverage overview\n.. image:: https://img.shields.io/codacy/grade/3def4d7b0bcd4b6f9aa4bb64e0338540?style=flat-square\n    :target: https://app.codacy.com/gh/nathanhi/pyfatfs\n    :alt: Codacy Code Quality\n.. image:: https://img.shields.io/pypi/pyversions/pyfatfs?style=flat-square\n    :target: https://github.com/nathanhi/pyfatfs\n    :alt: PyPI - Python Version\n.. image:: https://img.shields.io/pypi/v/pyfatfs?style=flat-square\n    :target: https://pypi.org/project/pyfatfs\n    :alt: PyPI\n.. image:: https://img.shields.io/github/license/nathanhi/pyfatfs.svg?style=flat-square\n    :target: https://github.com/nathanhi/pyfatfs/blob/HEAD/LICENSE\n    :alt: MIT License\n\npyfatfs\n=======\n\npyfatfs is a filesystem module for use with `PyFilesystem2 \u003chttps://pypi.org/project/fs/\u003e`_\nfor anyone who needs to access or modify files on a FAT filesystem. It also\nprovides a low-level API that allows direct interaction with a FAT filesystem\nwithout PyFilesystem2 abstraction.\n\npyfatfs supports FAT12/FAT16/FAT32 as well as the VFAT extension (long file names).\n\nInstallation\n------------\n\npyfatfs is available via PyPI as ``pyfatfs``, so just execute the following\ncommand to install the package for your project:\n\n.. code-block:: bash\n\n   $ pip install pyfatfs\n\n\nUsage\n=====\n\nThe easiest way to get started with pyfatfs is to use it in conjunction\nwith PyFilesystem2:\n\nPyFilesystem2\n-------------\n\n.. pyfilesystem-quickstart-begin\n\nUse fs.open_fs to open a filesystem with a FAT `FS URL \u003chttps://pyfilesystem2.readthedocs.io/en/latest/openers.html\u003e`_:\n\n.. code-block:: python\n\n   import fs\n   my_fs = fs.open_fs(\"fat:///dev/sda1\")\n\n\nParameters\n''''''''''\n\nIt is possible to supply query parameters to the URI of the\nPyFilesystem2 opener to influence certain behavior; it can\nbe compared to mount options. Multiple parameters can be\nsupplied by separating them via ``ampersand (\u0026)``.\n\nencoding\n^^^^^^^^\n\npyfatfs offers an encoding parameter to allow overriding the\ndefault encoding of ibm437 for file names, which was mainly\nused by DOS and still is the `default on Linux \u003chttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/fat/Kconfig?h=v5.10#n81\u003e`_.\n\nAny encoding known by Python can be used as value for this\nparameter, but keep in mind that this might affect interoperability\nwith other systems, especially when the selected encoding/codepage\nis not native or supported.\n\nPlease note that this only affects encoding of the 8DOT3 short file names, not\nlong file names of the VFAT extension, as LFN are always stored as UTF-16-LE.\n\n.. code-block:: python\n\n   import fs\n   my_fs = fs.open_fs(\"fat:///dev/sda1?encoding=cp1252\")\n\n\noffset\n^^^^^^\n\nSpecify an offset in bytes to skip when accessing the file. That way even\ncomplete disk images can be read if the location of the partition is known:\n\n.. code-block:: python\n\n   import fs\n   my_fs = fs.open_fs(\"fat:///dev/sda?offset=32256\")\n\n\npreserve_case\n^^^^^^^^^^^^^\n\nPreserve case when creating files. This will force LFN entries for all\ncreated files that do not match the 8DOT3 rules. This defaults to ``true``\nbut can be disabled by setting preserve_case to ``false``:\n\n.. code-block:: python\n\n   import fs\n   my_fs = fs.open_fs(\"fat:///dev/sda1?preserve_case=false\")\n\n\nread_only\n^^^^^^^^^\n\nOpen filesystem in read-only mode and thus don't allow writes/modifications.\nThis defaults to false but can be enabled by setting read_only to ``true``:\n\n.. code-block:: python\n\n   import fs\n   my_fs = fs.open_fs(\"fat:///dev/sda1?read_only=true\")\n\n\nutc\n^^^\n\nCreate all timestamps on the filesystem in UTC time rather than local time.\nAffects all directory entries' creation, modification and access times.\n\n.. code-block:: python\n\n    import fs\n    my_fs = fs.open_fs(\"fat:///dev/sda1?utc=true\")\n\n\nlazy_load\n^^^^^^^^^\n\nIf set to ``true`` (default), the directory entries are loaded only when accessed\nto increase performance with larger filesystems and resilience against\nrecursion / directory loops.\n\n.. code-block:: python\n\n    import fs\n    my_fs = fs.open_fs(\"fat:///dev/sda1?lazy_load=false\")\n.. pyfilesystem-quickstart-end\n\nTesting\n-------\n\nTests are located at the `tests` directory. In order to test your new\ncontribution to pyfatfs just run\n\n.. code-block:: bash\n\n    $ python setup.py test\n\nfrom your shell.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathanhi%2Fpyfatfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnathanhi%2Fpyfatfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathanhi%2Fpyfatfs/lists"}