{ "info": { "author": "Anatolii Aniskovych", "author_email": "lin.aaa.lin@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: BSD License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3", "Programming Language :: Python :: Implementation :: CPython", "Topic :: System :: Filesystems" ], "description": "===============\nPython getdents\n===============\n\nIterate large directories efficiently with python.\n\nAbout\n=====\n\n``python-getdents`` is a simple wrapper around Linux system call ``getdents64`` (see ``man getdents`` for details). `More details `_ on approach.\n\nTODO\n====\n\n* Verify that implementation works on platforms other than ``x86_64``.\n\nInstall\n=======\n\n.. code-block:: sh\n\n pip install getdents\n\nFor development\n---------------\n\n.. code-block:: sh\n\n python3 -m venv env\n . env/bin/activate\n pip install -e .[test]\n\nRun tests\n=========\n\n.. code-block:: sh\n\n ulimit -v 33554432 && py.test tests/\n\nOr\n\n.. code-block:: sh\n\n ulimit -v 33554432 && ./setup.py test\n\nUsage\n=====\n\n.. code-block:: python\n\n from getdents import getdents\n\n for inode, type, name in getdents('/tmp', 32768):\n print(name)\n\nAdvanced\n--------\n\n.. code-block:: python\n\n import os\n from getdents import *\n\n fd = os.open('/tmp', O_GETDENTS)\n\n for inode, type, name in getdents_raw(fd, 2**20):\n print({\n DT_BLK: 'blockdev',\n DT_CHR: 'chardev ',\n DT_DIR: 'dir ',\n DT_FIFO: 'pipe ',\n DT_LNK: 'symlink ',\n DT_REG: 'file ',\n DT_SOCK: 'socket ',\n DT_UNKNOWN: 'unknown ',\n }[type], {\n True: 'd',\n False: ' ',\n }[inode == 0],\n name,\n )\n\n os.close(fd)\n\nCLI\n---\n\nUsage\n~~~~~\n\n::\n\n python-getdents [-h] [-b N] [-o NAME] PATH\n\nOptions\n~~~~~~~\n\n+--------------------------+-------------------------------------------------+\n| Option | Description |\n+==========================+=================================================+\n| ``-b N`` | Buffer size (in bytes) to allocate when |\n| | iterating over directory. Default is 32768, the |\n| | same value used by glibc, you probably want to |\n+--------------------------+ increase this value. Try starting with 16777216 |\n| ``--buffer-size N`` | (16 MiB). Best performance is achieved when |\n| | buffer size rounds to size of the file system |\n| | block. |\n+--------------------------+-------------------------------------------------+\n| ``-o NAME`` | Output format: |\n| | |\n| | * ``plain`` (default) Print only names. |\n| | * ``csv`` Print as comma-separated values in |\n+--------------------------+ order: inode, type, name. |\n| ``--output-format NAME`` | * ``csv-headers`` Same as ``csv``, but print |\n| | headers on the first line also. |\n| | * ``json`` output as JSON array. |\n| | * ``json-stream`` output each directory entry |\n| | as single json object separated by newline. |\n+--------------------------+-------------------------------------------------+\n\nExit codes\n~~~~~~~~~~\n\n* 3 - Requested buffer is too large\n* 4 - ``PATH`` not found.\n* 5 - ``PATH`` is not a directory.\n* 6 - Not enough permissions to read contents of the ``PATH``.\n\nExamples\n~~~~~~~~\n\n.. code-block:: sh\n\n python-getdents /path/to/large/dir\n python -m getdents /path/to/large/dir\n python-getdents /path/to/large/dir -o csv -b 16777216 > dir.csv", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/ZipFile/python-getdents", "keywords": "getdents", "license": "BSD-2-Clause", "maintainer": "", "maintainer_email": "", "name": "getdents", "package_url": "https://pypi.org/project/getdents/", "platform": "", "project_url": "https://pypi.org/project/getdents/", "project_urls": { "Homepage": "http://github.com/ZipFile/python-getdents" }, "release_url": "https://pypi.org/project/getdents/0.3/", "requires_dist": null, "requires_python": "", "summary": "Python binding to linux syscall getdents64.", "version": "0.3" }, "last_serial": 5595498, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "2efb4b7a8018ec8c36021cf9cb2a073b", "sha256": "3cc27ea1098aa2fa47d1bc45a81fa89e9eebf78ccd5f253cc79fa171e2b73843" }, "downloads": -1, "filename": "getdents-0.1.tar.gz", "has_sig": false, "md5_digest": "2efb4b7a8018ec8c36021cf9cb2a073b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6223, "upload_time": "2016-12-08T17:01:09", "url": "https://files.pythonhosted.org/packages/7d/a6/96965104f9518fce64c0fb2dddabb30867bb2d12fc209f88edbe0286b6c5/getdents-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "444fb69dbc0c6a5dce30562bd2846d35", "sha256": "e2f5d6dbe03123c35bb372fca48a8d9c6225f7b4a609d5faec6bd2e330153e7e" }, "downloads": -1, "filename": "getdents-0.2.tar.gz", "has_sig": false, "md5_digest": "444fb69dbc0c6a5dce30562bd2846d35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4100, "upload_time": "2017-10-22T17:21:25", "url": "https://files.pythonhosted.org/packages/91/04/c650de5ae7fe670421e206ccb771ecb12f8b497595ad0f4aa3a9d1a41c2f/getdents-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "e0b702f9463a0f2aa18ab6b8254f3142", "sha256": "10fe119297be12d3e963c48f5a8e2700cc91ac310eace695e81b095daa142845" }, "downloads": -1, "filename": "getdents-0.3-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "e0b702f9463a0f2aa18ab6b8254f3142", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 22746, "upload_time": "2019-07-28T11:51:10", "url": "https://files.pythonhosted.org/packages/30/ae/7b77c01eac5c8e6ec62a0b95891719b0a7342c46a37761304ace6eee2c77/getdents-0.3-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "a7151aa9928f42544598ed70f6f5e45d", "sha256": "df1372c1d74fd4427230a6130e12b7c9cc5d3f4605d1d566263a0645f2ca6c52" }, "downloads": -1, "filename": "getdents-0.3-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "a7151aa9928f42544598ed70f6f5e45d", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 23061, "upload_time": "2019-07-28T11:51:20", "url": "https://files.pythonhosted.org/packages/91/ea/8b0fc9684e5df59fa6d04f49ef0026474d69fcf84d98555f2df4d81307b1/getdents-0.3-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "02a032252dda347367d380198b242152", "sha256": "d79deb1faed5a9e56f816ee9e88cf8ba76e86b55513c8e752a98beb58925a049" }, "downloads": -1, "filename": "getdents-0.3-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "02a032252dda347367d380198b242152", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 23978, "upload_time": "2019-07-28T11:51:31", "url": "https://files.pythonhosted.org/packages/b2/94/078893ac2e1a148716bc8b4a6ff2bac8c2204bca1a586a32a8d0822c1327/getdents-0.3-cp37-cp37m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "7dc0e5cddac5163d8167cb9c77144a88", "sha256": "4ba0d59a1676fb0e41d5b658ed4a20464bd57fcef1e14e51b1d9847791d982ec" }, "downloads": -1, "filename": "getdents-0.3.tar.gz", "has_sig": false, "md5_digest": "7dc0e5cddac5163d8167cb9c77144a88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6305, "upload_time": "2019-07-28T11:26:14", "url": "https://files.pythonhosted.org/packages/16/a3/6e25ec614d9e891c38b632368bc636e00e10c9f728e66de78b6f42aa23bd/getdents-0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e0b702f9463a0f2aa18ab6b8254f3142", "sha256": "10fe119297be12d3e963c48f5a8e2700cc91ac310eace695e81b095daa142845" }, "downloads": -1, "filename": "getdents-0.3-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "e0b702f9463a0f2aa18ab6b8254f3142", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 22746, "upload_time": "2019-07-28T11:51:10", "url": "https://files.pythonhosted.org/packages/30/ae/7b77c01eac5c8e6ec62a0b95891719b0a7342c46a37761304ace6eee2c77/getdents-0.3-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "a7151aa9928f42544598ed70f6f5e45d", "sha256": "df1372c1d74fd4427230a6130e12b7c9cc5d3f4605d1d566263a0645f2ca6c52" }, "downloads": -1, "filename": "getdents-0.3-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "a7151aa9928f42544598ed70f6f5e45d", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 23061, "upload_time": "2019-07-28T11:51:20", "url": "https://files.pythonhosted.org/packages/91/ea/8b0fc9684e5df59fa6d04f49ef0026474d69fcf84d98555f2df4d81307b1/getdents-0.3-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "02a032252dda347367d380198b242152", "sha256": "d79deb1faed5a9e56f816ee9e88cf8ba76e86b55513c8e752a98beb58925a049" }, "downloads": -1, "filename": "getdents-0.3-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "02a032252dda347367d380198b242152", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 23978, "upload_time": "2019-07-28T11:51:31", "url": "https://files.pythonhosted.org/packages/b2/94/078893ac2e1a148716bc8b4a6ff2bac8c2204bca1a586a32a8d0822c1327/getdents-0.3-cp37-cp37m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "7dc0e5cddac5163d8167cb9c77144a88", "sha256": "4ba0d59a1676fb0e41d5b658ed4a20464bd57fcef1e14e51b1d9847791d982ec" }, "downloads": -1, "filename": "getdents-0.3.tar.gz", "has_sig": false, "md5_digest": "7dc0e5cddac5163d8167cb9c77144a88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6305, "upload_time": "2019-07-28T11:26:14", "url": "https://files.pythonhosted.org/packages/16/a3/6e25ec614d9e891c38b632368bc636e00e10c9f728e66de78b6f42aa23bd/getdents-0.3.tar.gz" } ] }