不同语言中常用的操作

不同语言中常用的操作

简要记录一下,以防某一天用时才想着四处寻找 ## 遍历文件 C++ 标准库(C++17 及以上)

1
2
3
4
5
6
7
8
9
10
#include <filesystem>
#include <iostream>

int main() {
using namespace std;
using namespace std::filesystem;
for(auto& i : directory_iterator("C:\\example")) {
cout << i.path().string() << endl;
}
}

Python 有两种标准库中支持的遍历方法: 1. os.walk() 函数(递归遍历所有子孙目录) 该函数返回一个三元元组 (dirpath, dirnames, filenames),分别表示根目录、路径下所有的子目录、路径下所有的文件。

1
2
3
4
5
6
import os

if __name__ == '__main__':
for dirpath, dirnames, filenames in os.walk('C:\\example'):
for filepath in filenames:
print(os.path.join(dirpath, filepath))
2. os.listdir() 函数 不同于 os.walk(),该函数仅遍历指定路径下所有的文件以及文件夹,但不会遍历子孙文件夹。
1
2
3
4
5
6
7
import os

if __name__ == '__main__':
for entry in os.listdir('C:\\example'):
path: str = os.path.join('C:\\example', entry)
if os.path.isfile(path):
print(path)

Go 标准库同样提供了类似于 Python 中的两种方法: 1. filepath.Walk - 类似于 Python 中的 os.walk() 函数,递归遍历所有子孙目录。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main

import (
"fmt"
"os"
"path/filepath"
)

func main() {
var files = make([]string, 16)
err := filepath.Walk("C:\\example", func(path string, info os.FileInfo, err error) error {
if !info.IsDir() { // Not a directory
files = append(files, path)
}
return nil
})
if err != nil {
panic(err)
}
for _, file := range files {
fmt.Println(file)
}
}
2. File.ReadDir - 类似于 Python 中的 os.listdir(),只遍历目录下的文件或文件夹,不包含子孙目录。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
cur_path := "C:\\example"
f, _ := os.Open(cur_path)
files, _ := f.ReadDir(-1)
err := f.Close()
if err != nil {
panic(err)
}
for _, file := range files {
if !file.IsDir() {
fmt.Println(filepath.Join(cur_path, file.Name()))
}
}
}


不同语言中常用的操作
https://devexzh.github.io/2023/Practical_Codes_In_Different_Languages/
作者
Ryker Zhu
发布于
2023年1月16日
许可协议