python绑定到linux系统调用getdents64。

getdents的Python项目详细描述


使用python有效地迭代大目录。

关于

python-getdents是Linux系统调用getdents64的简单包装(有关详细信息,请参见man getdents)。More details进近。

待办事项

  • 验证实现是否在x86_64以外的平台上工作。

安装

pip install getdents

用于开发

python3 -m venv env
. env/bin/activate
pip install -e .[test]

运行测试

ulimit -v 33554432&& py.test tests/

ulimit -v 33554432&& ./setup.py test

用法

fromgetdentsimportgetdentsforinode,type,nameingetdents('/tmp',32768):print(name)

高级

importosfromgetdentsimport*fd=os.open('/tmp',O_GETDENTS)forinode,type,nameingetdents_raw(fd,2**20):print({DT_BLK:'blockdev',DT_CHR:'chardev ',DT_DIR:'dir     ',DT_FIFO:'pipe    ',DT_LNK:'symlink ',DT_REG:'file    ',DT_SOCK:'socket  ',DT_UNKNOWN:'unknown ',}[type],{True:'d',False:' ',}[inode==0],name,)os.close(fd)

cli

用法

python-getdents [-h] [-b N] [-o NAME] PATH

选项

OptionDescription
^{tt5}$Buffer size (in bytes) to allocate when iterating over directory. Default is 32768, the same value used by glibc, you probably want to increase this value. Try starting with 16777216 (16 MiB). Best performance is achieved when buffer size rounds to size of the file system block.
^{tt6}$
^{tt7}$

Output format:

  • ^{tt8}$ (default) Print only names.
  • ^{tt9}$ Print as comma-separated values in order: inode, type, name.
  • ^{tt10}$ Same as ^{tt9}$, but print headers on the first line also.
  • ^{tt12}$ output as JSON array.
  • ^{tt13}$ output each directory entry as single json object separated by newline.
^{tt14}$
< H4>退出代码< /H4>
  • 3-请求的缓冲区太大
  • 找不到4-PATH
  • 5-PATH不是目录。
  • 6-权限不足,无法读取PATH的内容。

示例

python-getdents /path/to/large/dir
python -m getdents /path/to/large/dir
python-getdents /path/to/large/dir -o csv -b 16777216 > dir.csv

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将外部库(LIB)集成到grails项目中?   java 安卓:progressTintMode、安卓:secondaryProgressTintMode和安卓:progressDrawable做什么?   java获得了启动播放器的精确方向   java如何在布局/样式XML中设置状态栏着色颜色?   Java中的图形游戏未显示   java如何在WebSphere8.5.5中的我的JAAS自定义登录模块中使用SAML令牌属性值   使用jackson spring API解析嵌套json   java如何从用户请求中获取用户代理?   Netbeans 6.8中的java UI控件定位   java显示listgrid中两个表中的数据   java Google Cloud Bigtable客户端连接池   Vert中的java更改日志级别。通过添加一个配置文件   java调用构造函数是否意味着创建实例?   java getFrom()[0])中[0]用于获取邮件发件人地址的用法是什么   “继续”标志的java Gradle属性?   jakarta ee如何在java ee中创建GUID   java不兼容类型:无法将int转换为整数   java需要借助DefaultHandler的characters函数将XML数据读入安卓应用程序   java mapstruct将方法应用于列表中的所有对象