盒子
盒子
文章目录
  1. Nim 每日早茶
    1. 递归地获取指定路径下的内容
    2. 非递归地获取指定路径下的内容
    3. 每日库推荐

如何使用Nim语言获取给定路径的文件

Nim 每日早茶

如何使用Nim语言获取给定路径的文件
https://tea.nim-cn.com/archives/

递归地获取指定路径下的内容

walkDirRec 函数用来递归地获取指定路径下的内容。

1
2
3
4
5
import os, re

for file in walkDirRec "../":
if file.match re".*\.md":
echo file

输出:

1
2
3
4
5
6
7
8
9
10
11
..\tnim\README.md
..\timeit\README.md
..\structure\单链表.md
..\scinim\index.md
..\scinim\windows.md
..\scim\README.md
..\scim\src\scim\record.md
..\replim-master\README.md
..\replim-master\TODO.md
..\nrpl\README.md
..\nisp\README.md

非递归地获取指定路径下的内容

walkFiles 函数用于非递归匹配指定路径下的文件,支持特定模式匹配,但是匹配方式是由平台决定的。但至少各个平台都支持通配符*匹配任意内容。

1
2
3
4
import os

for file in walkFiles "../arraymancer/*.md":
echo file

输出:

1
2
3
..\arraymancer\changelog.md
..\arraymancer\Contributors.md
..\arraymancer\README.md

walkDirs 函数用来非递归地匹配指定路径下文件夹。

1
2
for file in walkDirs "../arraymancer/*":
echo file

输出:

1
2
3
4
5
6
7
..\arraymancer\.git
..\arraymancer\benchmarks
..\arraymancer\docs
..\arraymancer\examples
..\arraymancer\src
..\arraymancer\tests
..\arraymancer\tools

walkPattern函数用来非递归匹配满足条件的文件以及文件夹。

1
2
3
4
import os

for file in walkPattern "../arraymancer/*":
echo file

输出:

1
2
3
4
5
6
7
8
9
..\arraymancer\.appveyor.yml
..\arraymancer\.git
..\arraymancer\.gitignore
..\arraymancer\.travis.yml
..\arraymancer\arraymancer.nimble
..\arraymancer\benchmarks
..\arraymancer\changelog.md
..\arraymancer\Contributors.md
..\arraymancer\docs

walkDir函数可以非递归地匹配给定路径下的内容的类型以及路径。

1
2
3
4
import os

for kind, file in walkDir("../", relative=true):
echo (kind, file)

输出:

1
2
3
4
5
6
7
(pcDir, ".git")
(pcFile, ".gitignore")
(pcFile, "Nim 语言中的死代码[dead code]消除.md")
(pcFile, "README.md")
(pcFile, "test.exe")
(pcFile, "test.nim")
(pcFile, "如何使用Nim语言获取给定路径的文件.md")

更多内容请查看官方标准库。

每日库推荐

arraymancer 是 Nim 语言中高性能、优雅的深度学习库,支持OpenMP,Cuda和OpenCL后端,可以在CPU,GPU和嵌入式设备上进行深度学习。

https://github.com/mratsim/Arraymancer