# Python iterate over path tree.
## 安装
你可以通过 [pypi](https://pypi.org/project/iterdir/) 安装
```console
pip install -U iterdir
```
## 使用
### 用作模块
```python
from iterdir import iterdir
```
### 用作命令
提供一个命令行工具,用于导出目录树
```console
$ iterdir -h
usage: iterdir [-h] [-m MIN_DEPTH] [-M MAX_DEPTH]
[-k [{inode,name,path,relpath,is_dir,stat,stat_info} ...]]
[-s SELECT] [-se] [-o OUTPUT_FILE]
[-hs [{shake_256,blake2b,blake2s,sha512_224,sha224,sha3_384,sha512,ripemd160,sm3,md5-sha1,sha3_256,sha3_224,sha256,sha1,sha384,sha3_512,shake_128,sha512_256,md5,crc32} ...]]
[-dfs] [-fl] [-v]
[path]
目录树信息遍历导出
positional arguments:
path 文件夹路径,默认为当前工作目录
options:
-h, --help show this help message and exit
-m MIN_DEPTH, --min-depth MIN_DEPTH
最小深度,默认值 0,小于 0 时不限
-M MAX_DEPTH, --max-depth MAX_DEPTH
最大深度,默认值 -1,小于 0 时不限
-k [{inode,name,path,relpath,is_dir,stat,stat_info} ...], --keys [{inode,name,path,relpath,is_dir,stat,stat_info} ...]
选择输出的 key,默认输出所有可选值
-s SELECT, --select SELECT
对路径进行筛选,提供一个表达式(会注入一个变量 entry,类型是 iterdir.DirEntry)或函数(会传入一个参数,类型是 iterdir.DirEntry)
-se, --select-exec 对 -s/--select 传入的代码用 exec 运行,其中必须存在名为 select 的函数。否则,视为表达式或 lambda 函数
-o OUTPUT_FILE, --output-file OUTPUT_FILE
保存到文件,此时命令行会输出进度条,根据扩展名来决定输出格式
- *.csv 输出一个 csv,第 1 行为表头,以后每行输出一条数据
- *.json 输出一个 JSON Object 的列表
- * 每行输出一条 JSON Object
-hs [{shake_256,blake2b,blake2s,sha512_224,sha224,sha3_384,sha512,ripemd160,sm3,md5-sha1,sha3_256,sha3_224,sha256,sha1,sha384,sha3_512,shake_128,sha512_256,md5,crc32} ...], --hashes [{shake_256,blake2b,blake2s,sha512_224,sha224,sha3_384,sha512,ripemd160,sm3,md5-sha1,sha3_256,sha3_224,sha256,sha1,sha384,sha3_512,shake_128,sha512_256,md5,crc32} ...]
计算文件的哈希值,可以选择多个算法
-dfs, --depth-first 使用深度优先搜索,否则使用广度优先
-fl, --follow-symlinks
跟进符号连接,否则会把符号链接视为文件,即使它指向目录
-v, --version 输出版本号
```
Raw data
{
"_id": null,
"home_page": "https://github.com/ChenyangGao/web-mount-packs/tree/main/python-module/iterdir",
"name": "iterdir",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.12",
"maintainer_email": null,
"keywords": "iterdir, traverse",
"author": "ChenyangGao",
"author_email": "wosiwujm@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/bc/83/4dd64760ba3bfd5c996bc0d8f569761d843b11c5be443ea44df949435c88/iterdir-0.0.7.1.tar.gz",
"platform": null,
"description": "# Python iterate over path tree.\n\n## \u5b89\u88c5\n\n\u4f60\u53ef\u4ee5\u901a\u8fc7 [pypi](https://pypi.org/project/iterdir/) \u5b89\u88c5\n\n```console\npip install -U iterdir\n```\n\n## \u4f7f\u7528\n\n### \u7528\u4f5c\u6a21\u5757\n\n```python\nfrom iterdir import iterdir\n```\n\n### \u7528\u4f5c\u547d\u4ee4\n\n\u63d0\u4f9b\u4e00\u4e2a\u547d\u4ee4\u884c\u5de5\u5177\uff0c\u7528\u4e8e\u5bfc\u51fa\u76ee\u5f55\u6811\n\n```console\n$ iterdir -h\nusage: iterdir [-h] [-m MIN_DEPTH] [-M MAX_DEPTH]\n [-k [{inode,name,path,relpath,is_dir,stat,stat_info} ...]]\n [-s SELECT] [-se] [-o OUTPUT_FILE]\n [-hs [{shake_256,blake2b,blake2s,sha512_224,sha224,sha3_384,sha512,ripemd160,sm3,md5-sha1,sha3_256,sha3_224,sha256,sha1,sha384,sha3_512,shake_128,sha512_256,md5,crc32} ...]]\n [-dfs] [-fl] [-v]\n [path]\n\n\u76ee\u5f55\u6811\u4fe1\u606f\u904d\u5386\u5bfc\u51fa\n\npositional arguments:\n path \u6587\u4ef6\u5939\u8def\u5f84\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\n\noptions:\n -h, --help show this help message and exit\n -m MIN_DEPTH, --min-depth MIN_DEPTH\n \u6700\u5c0f\u6df1\u5ea6\uff0c\u9ed8\u8ba4\u503c 0\uff0c\u5c0f\u4e8e 0 \u65f6\u4e0d\u9650\n -M MAX_DEPTH, --max-depth MAX_DEPTH\n \u6700\u5927\u6df1\u5ea6\uff0c\u9ed8\u8ba4\u503c -1\uff0c\u5c0f\u4e8e 0 \u65f6\u4e0d\u9650\n -k [{inode,name,path,relpath,is_dir,stat,stat_info} ...], --keys [{inode,name,path,relpath,is_dir,stat,stat_info} ...]\n \u9009\u62e9\u8f93\u51fa\u7684 key\uff0c\u9ed8\u8ba4\u8f93\u51fa\u6240\u6709\u53ef\u9009\u503c\n -s SELECT, --select SELECT\n \u5bf9\u8def\u5f84\u8fdb\u884c\u7b5b\u9009\uff0c\u63d0\u4f9b\u4e00\u4e2a\u8868\u8fbe\u5f0f\uff08\u4f1a\u6ce8\u5165\u4e00\u4e2a\u53d8\u91cf entry\uff0c\u7c7b\u578b\u662f iterdir.DirEntry\uff09\u6216\u51fd\u6570\uff08\u4f1a\u4f20\u5165\u4e00\u4e2a\u53c2\u6570\uff0c\u7c7b\u578b\u662f iterdir.DirEntry\uff09\n -se, --select-exec \u5bf9 -s/--select \u4f20\u5165\u7684\u4ee3\u7801\u7528 exec \u8fd0\u884c\uff0c\u5176\u4e2d\u5fc5\u987b\u5b58\u5728\u540d\u4e3a select \u7684\u51fd\u6570\u3002\u5426\u5219\uff0c\u89c6\u4e3a\u8868\u8fbe\u5f0f\u6216 lambda \u51fd\u6570\n -o OUTPUT_FILE, --output-file OUTPUT_FILE\n \u4fdd\u5b58\u5230\u6587\u4ef6\uff0c\u6b64\u65f6\u547d\u4ee4\u884c\u4f1a\u8f93\u51fa\u8fdb\u5ea6\u6761\uff0c\u6839\u636e\u6269\u5c55\u540d\u6765\u51b3\u5b9a\u8f93\u51fa\u683c\u5f0f\n - *.csv \u8f93\u51fa\u4e00\u4e2a csv\uff0c\u7b2c 1 \u884c\u4e3a\u8868\u5934\uff0c\u4ee5\u540e\u6bcf\u884c\u8f93\u51fa\u4e00\u6761\u6570\u636e\n - *.json \u8f93\u51fa\u4e00\u4e2a JSON Object \u7684\u5217\u8868\n - * \u6bcf\u884c\u8f93\u51fa\u4e00\u6761 JSON Object\n -hs [{shake_256,blake2b,blake2s,sha512_224,sha224,sha3_384,sha512,ripemd160,sm3,md5-sha1,sha3_256,sha3_224,sha256,sha1,sha384,sha3_512,shake_128,sha512_256,md5,crc32} ...], --hashes [{shake_256,blake2b,blake2s,sha512_224,sha224,sha3_384,sha512,ripemd160,sm3,md5-sha1,sha3_256,sha3_224,sha256,sha1,sha384,sha3_512,shake_128,sha512_256,md5,crc32} ...]\n \u8ba1\u7b97\u6587\u4ef6\u7684\u54c8\u5e0c\u503c\uff0c\u53ef\u4ee5\u9009\u62e9\u591a\u4e2a\u7b97\u6cd5\n -dfs, --depth-first \u4f7f\u7528\u6df1\u5ea6\u4f18\u5148\u641c\u7d22\uff0c\u5426\u5219\u4f7f\u7528\u5e7f\u5ea6\u4f18\u5148\n -fl, --follow-symlinks\n \u8ddf\u8fdb\u7b26\u53f7\u8fde\u63a5\uff0c\u5426\u5219\u4f1a\u628a\u7b26\u53f7\u94fe\u63a5\u89c6\u4e3a\u6587\u4ef6\uff0c\u5373\u4f7f\u5b83\u6307\u5411\u76ee\u5f55\n -v, --version \u8f93\u51fa\u7248\u672c\u53f7\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "python iterate over path tree.",
"version": "0.0.7.1",
"project_urls": {
"Homepage": "https://github.com/ChenyangGao/web-mount-packs/tree/main/python-module/iterdir",
"Repository": "https://github.com/ChenyangGao/web-mount-packs/tree/main/python-module/iterdir"
},
"split_keywords": [
"iterdir",
" traverse"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "94ed6eed6e0faed8762c2c09c3a76725f9921b2db931f8a0e2f4f2e05c6efd25",
"md5": "9e24579655c03252111ef38c33fea315",
"sha256": "f0a5e219449b13dd0026f7af30a347347f8e01b35ae90da4620895073b7fc93e"
},
"downloads": -1,
"filename": "iterdir-0.0.7.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9e24579655c03252111ef38c33fea315",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.12",
"size": 10236,
"upload_time": "2025-02-19T11:55:52",
"upload_time_iso_8601": "2025-02-19T11:55:52.751685Z",
"url": "https://files.pythonhosted.org/packages/94/ed/6eed6e0faed8762c2c09c3a76725f9921b2db931f8a0e2f4f2e05c6efd25/iterdir-0.0.7.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bc834dd64760ba3bfd5c996bc0d8f569761d843b11c5be443ea44df949435c88",
"md5": "ad6e643c3c5e5793c58b2e46d83b28c1",
"sha256": "196d985276b6b7111168ccb015379754233db63f06efa64a5d8a076ea253c66a"
},
"downloads": -1,
"filename": "iterdir-0.0.7.1.tar.gz",
"has_sig": false,
"md5_digest": "ad6e643c3c5e5793c58b2e46d83b28c1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.12",
"size": 7636,
"upload_time": "2025-02-19T11:55:54",
"upload_time_iso_8601": "2025-02-19T11:55:54.940233Z",
"url": "https://files.pythonhosted.org/packages/bc/83/4dd64760ba3bfd5c996bc0d8f569761d843b11c5be443ea44df949435c88/iterdir-0.0.7.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-19 11:55:54",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ChenyangGao",
"github_project": "web-mount-packs",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "iterdir"
}