在Nim语言中如何列出指定目录下的所有内容条目
Nim目录内容列举实现方案
Nim 标准库的os模块已经内置了完整的目录遍历功能,不存在功能未实现的情况,你可以通过以下两种常用方式完成/home/username/Documents/路径下的内容列举:
方法1:使用walkDir迭代器统一遍历所有条目
该方法可以一次遍历目标目录下的所有一级条目,自动区分文件、目录、软链接类型:
import os proc main() = # expandTilde用于解析路径中的~为用户家目录绝对路径 let targetDir = expandTilde("/home/username/Documents/") # 校验目录是否存在 if not dirExists(targetDir): echo "目标目录不存在" return for entry in walkDir(targetDir): case entry.kind of pcFile: echo "文件:", entry.name of pcDir: echo "目录:", entry.name of pcLinkToFile, pcLinkToDir: echo "软链接:", entry.name when isMainModule: main()
如果需要递归遍历所有子目录下的内容,将walkDir替换为walkDirRec即可。
方法2:分别获取目录和文件列表
如果需要单独提取子目录和文件的集合,可以直接调用listDirs和listFiles方法:
import os proc main() = let targetDir = expandTilde("/home/username/Documents/") if not dirExists(targetDir): echo "目标目录不存在" return # 输出所有一级子目录 echo "=== 子目录列表 ===" for dir in listDirs(targetDir): echo dir # 输出所有一级文件 echo "\n=== 文件列表 ===" for file in listFiles(targetDir): echo file when isMainModule: main()
- 上述所有方法默认都只遍历目标目录的一级内容,不需要递归无需额外配置
- 路径如果不包含
~可以直接传绝对路径,不需要调用expandTilde处理
内容的提问来源于stack exchange,提问作者Netsu
相关产品推荐
相关产品推荐

