# uos – 基本“文件系统”服务

## 概要

  本节简要介绍`Waffle Nano`上的文件系统`uos`,详细介绍如何使用`python`对`Waffle Nano`内部的`SPIFFS`文件系统进行操作。

## 注意:

  1.文件系统在执行任务过程中异常掉电,存在造成正在写入的文件被损坏的风险。对掉电保护要求高的场景,不建议往文件系统中对文件进行任何操作,或者须根据应用场景做好数据备份。

  2.文件系统底层依赖的FLASH存储器件存在常温下10万次读写寿命的限制,建议用户程序尽可能避免对其长期反复进行操作。

  3.目前文件系统不支持多级目录,所有文件都同一保存在根目录下。

  4.文件系统所能管理的文件名最长不能超过31byte。

  5.此文件系统最大支持同时打开32个文件,且删除文件时,如果已经打开32个文件,则必须调用`python`的`File close()`方法关闭其中任意一个文件,否则将无法删除文件。

  6.文件系统分区大小虽然有`44kb`,但其并非全部能用于存储文件数据,有效利用率比较低,具体存储空间大小按照实际使用为准,与文件本身有关。


## 函数

### uos.remove(path)

  函数说明:删除一个文件。

  函数参数:`path`文件名字符串。

  函数返回:

|值|描述|
|---|---|
|False|删除失败或未找到相应文件|
|True|删除成功|

  示例:从`Waffle Nano`中删除一个名为`a.txt`的文件。

```python
>>>import uos
>>>uos.remove("a.txt")
True
```

### uos.uname()

  函数说明:获取系统信息

  函数返回:系统信息字典

  示例:从`Waffle Nano`中获取当前系统信息。

```python
>>>import uos
>>>uos.uname()
(sysname='BlackWalnutOS', release='OpenHarmony-v1.1.1-LTS', version='v0.8.0-beta on 2021-07-22', machine='Waffle Nano with Hi3861V100')
```

### uos.move(old_path, new_path)

  函数说明:移动文件(文件重命名)。

  函数参数:`old_path`旧文件名字符串。`new_path`新文件名字符串。

  函数返回:

|值|描述|
|---|---|
|False|移动失败或未找到相应文件|
|True|移动成功|

  示例:将`Waffle Nano`中的一个名为`a.txt`的文件重命名为`b.txt`。

```python
>>>import uos
>>>uos.move('a.txt','b.txt')
True
```

### uos.copy(old_path, new_path)

  函数说明:文件复制。

  函数参数:`old_path`待复制的文件名字符串。`new_path`新文件的文件名字符串。

  函数返回:

|值|描述|
|---|---|
|False|复制失败或未找到相应文件|
|True|复制成功|

  示例:将`Waffle Nano`中的一个名为`a.txt`的文件复制成为一个名为`b.txt`的文件,并依然保留原有的`a.txt`文件。

```python
>>>import uos
>>>uos.copy('a.txt','b.txt')
True
```

### uos.stat(path)

  函数说明:获取文件大小。

  函数参数:文件名字符串。

  函数返回:文件字节数

  示例:显示`Waffle Nano`中的一个名为`a.txt`的文件大小,如下所示,其大小为1498字节。

```python
>>>import uos
>>>uos.stat("b.txt")
1498
```

### uos.list()

  函数说明:浏览当前`Waffle Nano`上的所有文件。

  函数返回:文件名字符列表。

  示例:显示`Waffle Nano`中所有文件。下述代码运行结果表示在这块`Waffle Nano`上存在`b.txt`和`a.txt`两个文件。

```python
>>>import uos
>>>uos.list()
['b.txt', 'a.txt']
```