MicroPython内核开发笔记书内软件用例 :文件系统实验

举报
tsinghuazhuoqing 发表于 2022/07/02 00:53:20 2022/07/02
【摘要】 简 介: 本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的关于文件读写操作以及 os 相关的软件用例部分内容。 关键词: MicroPython,MM32F3277,文件操...

简 介: 本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的关于文件读写操作以及 os 相关的软件用例部分内容。

关键词 MicroPythonMM32F3277文件操作

书稿内容
目 录
Contents
基础实验
os相关命令
总 结
存在问题

 

软件用例:
这部分书稿内容包括有:

  1. 对于文件文件进行读写。
  2. 关于 os 的相关操作。
  • 书稿内位置: 第七章相关内容;

 

§01 稿内容


一、基础实验

1、文本文件写入

下面代码是在文件 text.txt 中写入由 ‘*’ 构成的三角形文件。

import machine

fname = 'text.txt'

with open(fname, 'w') as f:
    for i in range(10):
        f.write('*'*(i+1) + '\n')

print("Write text file.")

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

代码执行后,信息显示:

2
3
4
5
6
7
8
9
10
11
Write text file.
>>> 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

每执行一句 f.write, 该函数返回写入文件的字符数量。如果不希望程序在 f.write 输出写入字符数量,可以使用:

_ = f.write('*' * (i+1) + '\n')

  
 
  • 1

下面程序是将 15 行杨辉三角形数值写入文件 yhtriangle.txt 文件中。读出结果见后面文本文件读取实验。

import machine

LINE_NUM = 15
b = [1]

fname = 'yhtriangle.txt'
with open(fname, 'w') as f:

    for i in range(LINE_NUM):
        strall = ' '.join([str(s) for s in b]) + '\n'
        f.write(strall)
        b = [1] + [b[n]+b[n+1] for n in range(len(b)-1)] + [1]

print('Write text file end.')

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2、文本文件读取

下面代码将 text.txt 文件中的每一行读入,并显示出来。

fname = 'text.txt'

print("Text file contents:")

with open(fname, 'r') as f:
    for l in f.readlines():
        print(l.strip('\n'))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

程序运行结果:

Text file contents:
*
**
***
****
*****
******
*******
********
*********
**********
>>> 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

下面代码是将上面 fname 修改成 yhtriangle.txt 之后,读出杨辉三角形文件中的内容。

Text file contents:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1
>>> 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

由于文件读取返回的类型都是 str ,所以还无法直接读取二进制文件。

二、 os相关命令

下面通过交互式操作测试 os 相关功能。 在交互窗口内输入以下命令。

import os

dir(os)
os.listdir('')

  
 
  • 1
  • 2
  • 3
  • 4

MicroPython 输出结果为:

['__name__', 'remove', 'chdir', 'getcwd', 'ilistdir', 'listdir', 'mkdir', 'rename', 'rmdir', 'stat', 'statvfs', 'sync', 'unlink']
['System Volume Information', 'test.txt', 'test1.py', 'data.dat', 'mm32sub.py', 'text.txt', 'subfile.py', 'i2coled.py', 'yhtriangle.txt', 'main.PY', 'gif.txt']
>>> 

  
 
  • 1
  • 2
  • 3

第一行显示了 os 中可以被使用的功能。第二行就是调用 os.listdir() 功能,显示 SD 卡根目录下所有的文件。 可以看到前面实验中建立的 text.txt , yhtriangle.txt 等文本文件。

使用 os.remove 命令,可以删除 SD 卡中的相关文件。比如使用

os.remove('text.txt')

  
 
  • 1

便可以将 SD 卡中的 text.txt 文件删除。重新使用 os.listdir() 获得的结果如下。其中 text.txt 已经被删除了。

['System Volume Information', 'test.txt', 'test1.py', 'data.dat', 'mm32sub.py', 'subfile.py', 'i2coled.py', 'yhtriangle.txt', 'sub1', 'main.PY', 'gif.txt']
>>> 

  
 
  • 1
  • 2

 

  结 ※


本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的关于文件读写操作以及 os 相关的软件用例部分内容。

一、存在问题

使用 f.read() 读取二进制文件,始终返回是 str 数据对象。 这就是的对于二进制文件读取数据出现了问题。 现在通过测试,仍然没有找到读写二进制文件的方法。


■ 相关文献链接:

文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuoqing.blog.csdn.net/article/details/125546192

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。