Skip to main content

python iterate over path tree.

Project description

Python iterate over path tree.

安装

你可以通过 pypi 安装

pip install -U iterdir

使用

用作模块

提供了一个函数 iterdir() 可用于遍历目录树

>>> from iterdir import iterdir
>>> help(iterdir)

Help on function iterdir in module iterdir:

iterdir(top=None, /, topdown: Optional[bool] = True, min_depth: int = 1, max_depth: int = 1, predicate: Optional[collections.abc.Callable[..., Optional[bool]]] = None, onerror: bool | collections.abc.Callable[[OSError], Any] = False, follow_symlinks: bool = False) -> collections.abc.Iterator
    遍历目录树
    
    :param top: 根路径默认为当前目录
    :param topdown: 如果是 True自顶向下深度优先搜索如果是 False自底向上深度优先搜索如果是 None广度优先搜索
    :param min_depth: 最小深度小于 0 时不限参数 `top` 本身的深度为 0它的直接跟随路径的深度是 1以此类推
    :param max_depth: 最大深度小于 0 时不限
    :param predicate: 调用以筛选遍历得到的路径可接受的参数与参数 `top` 的类型一致参见 `:return:` 部分
    :param onerror: 处理 OSError 异常如果是 True抛出异常如果是 False忽略异常如果是调用以异常为参数调用之
    :param follow_symlinks: 是否跟进符号连接如果为否则会把符号链接视为文件即使它指向目录)。
    
    :return: 遍历得到的路径的迭代器参数 `top` 的类型
        - 如果是 iterdir.DirEntry则是 iterdir.DirEntry 实例的迭代器
        - 如果是 pathlib.Path则是 pathlib.Path 实例的迭代器
        - 否则得到 `os.fspath(top)` 相同类型的实例的迭代器

用作命令

提供一个命令行工具,用于导出目录树

$ iterdir -h
usage: iterdir [-h] [-m MIN_DEPTH] [-M MAX_DEPTH]
               [-k [{inode,name,path,relpath,isdir,islink,stat} ...]]
               [-t {log,json,csv}] [-d DUMP] [-de] [-s SELECT] [-se]
               [-o OUTPUT_FILE]
               [-hs [{sha256,sha3_512,sha1,sha512_256,md5,ripemd160,sha512,md5-sha1,sha3_256,sha384,sha3_384,sha512_224,sha224,sm3,shake_128,blake2s,sha3_224,blake2b,shake_256,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,isdir,islink,stat} ...], --keys [{inode,name,path,relpath,isdir,islink,stat} ...]
                        选择输出的 key,默认输出所有可选值
  -t {log,json,csv}, --output-type {log,json,csv}
                        输出类型,默认为 log
                        - log   每行输出一条数据,每条数据输出为一个 json 的 object
                        - json  输出一个 json 的 list,每条数据输出为一个 json 的 object
                        - csv   输出一个 csv,第 1 行为表头,以后每行输出一条数据
  -d DUMP, --dump DUMP  (优先级高于 -k/--keys、-hs/--hashes、-t/--output-type) 调用以导出数据,如果有返回值则再行输出,尾部会添加一个 b'
                        '。
                        如果结果 result 是
                            - None,跳过
                            - bytes,输出
                            - 其它,先调用 `bytes(str(result), 'utf-8')`,再输出
                        提供一个表达式(会注入一个变量 path,类型是 pathlib.Path)或函数(会传入一个参数,类型是 pathlib.Path)    
  -de, --dump-exec      对 -d/--dump 传入的代码用 exec 运行,其中必须存在名为 dump 的函数。否则,视为表达式或 lambda 函数
  -s SELECT, --select SELECT
                        对路径进行筛选,提供一个表达式(会注入一个变量 path,类型是 pathlib.Path)或函数(会传入一个参数,类型是 pathlib.Path)
  -se, --select-exec    对 -s/--select 传入的代码用 exec 运行,其中必须存在名为 select 的函数。否则,视为表达式或 lambda 函数
  -o OUTPUT_FILE, --output-file OUTPUT_FILE
                        保存到文件,此时命令行会输出进度条
  -hs [{sha256,sha3_512,sha1,sha512_256,md5,ripemd160,sha512,md5-sha1,sha3_256,sha384,sha3_384,sha512_224,sha224,sm3,shake_128,blake2s,sha3_224,blake2b,shake_256,crc32} ...], --hashes [{sha256,sha3_512,sha1,sha512_256,md5,ripemd160,sha512,md5-sha1,sha3_256,sha384,sha3_384,sha512_224,sha224,sm3,shake_128,blake2s,sha3_224,blake2b,shake_256,crc32} ...]
                        计算文件的哈希值,可以选择多个算法
  -dfs, --depth-first   使用深度优先搜索,否则使用广度优先
  -fl, --follow-symlinks
                        跟进符号连接,否则会把符号链接视为文件,即使它指向目录
  -v, --version         输出版本

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

iterdir-0.0.6.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

iterdir-0.0.6-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file iterdir-0.0.6.tar.gz.

File metadata

  • Download URL: iterdir-0.0.6.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.0 CPython/3.11.8 Darwin/23.5.0

File hashes

Hashes for iterdir-0.0.6.tar.gz
Algorithm Hash digest
SHA256 6fe55c38635f34b74a61f19117bd0939cb783e2bd67f6e7bffb85a4be4b19668
MD5 c9f24fdb74e58b948405600801c95f5f
BLAKE2b-256 fd3058cbaf1bd581abbc83445901c1f07232c3bacc29b20340117bf144e7bacf

See more details on using hashes here.

File details

Details for the file iterdir-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: iterdir-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.0 CPython/3.11.8 Darwin/23.5.0

File hashes

Hashes for iterdir-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 f684faa759b3dbf1d625ee6501de7bcbc2d995b9790006313cc5058ef3a1b6a4
MD5 dc6dae97395515beaa335dc8ec13fcaf
BLAKE2b-256 f175701bb8fd537152732a51f72ac7ff0e72ac538c5ccda5b44298091b667360

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