首页 > 解决方案 > python相当于perl的“opendir”

问题描述

我本质上正在寻找的是一种将句柄返回到 python 中的目录的方法,有点像 perl 如何做这样的事情......

opendir CWD .

见: http: //perldoc.perl.org/5.8.9/functions/opendir.html

然后可以将 CWD 用作指向目录的句柄,就像*CWD在文件操作中一样。

我在 python 中遇到的最接近的是 open() 但它不返回文件描述符/指针并且不适用于目录。

标签: pythonpython-2.7perlopendirfile-pointer

解决方案


scandir函数打开一个句柄并允许您迭代地遍历每个文件。这很有用,原因与以下相同opendir:当可能有大量文件时,它的效率要高得多:

https://docs.python.org/3/library/os.html#os.scandir

的另一个用途opendir是能够保留对 inode 的引用,而不是路径。

scandir 返回的生成器可以像 CWD 一样被传递,它将保留 CWD 的“类似 inode”的功能。例如,您可以获取一个生成器scandir,然后重命名基础文件夹,并且生成器仍然有效。

但是,它不能“重置”到开始。AFAICT 这是 perl 唯一能做的而 python 不能做的事情。


推荐阅读