簡 介: 本文給出了 MicroPython內核開發筆記:書內嵌入實驗任務 中的關於文件讀寫操作以及 os 相關的軟件用例部分內容。
關鍵詞
:MicroPython,MM32F3277,文件操作
軟件用例:
這部分書稿內容包括有:
- 對於文件文件進行讀寫。
- 關於 os 的相關操作。
- 書稿內位置: 第七章相關內容;
下面代碼是在文件 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.")
代碼執行後,信息顯示:
2
3
4
5
6
7
8
9
10
11
Write text file.
>>>
每執行一句 f.write, 該函數返回寫入文件的字符數量。如果不希望程序在 f.write 輸出寫入字符數量,可以使用:
_ = f.write('*' * (i+1) + '\n')
下面程序是將 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.')
下面代碼將 text.txt 文件中的每一行讀入,並顯示出來。
fname = 'text.txt'
print("Text file contents:")
with open(fname, 'r') as f:
for l in f.readlines():
print(l.strip('\n'))
程序運行結果:
Text file contents:
*
**
***
****
*****
******
*******
********
*********
**********
>>>
下面代碼是將上面 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
>>>
由於文件讀取返回的類型都是 str ,所以還無法直接讀取二進制文件。
下面通過交互式操作測試 os 相關功能。 在交互窗口內輸入以下命令。
import os
dir(os)
os.listdir('')
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']
>>>
第一行顯示了 os 中可以被使用的功能。第二行就是調用 os.listdir() 功能,顯示 SD 卡根目錄下所有的文件。 可以看到前面實驗中建立的 text.txt , yhtriangle.txt 等文本文件。
使用 os.remove 命令,可以刪除 SD 卡中的相關文件。比如使用
os.remove('text.txt')
便可以將 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']
>>>
本文給出了 MicroPython內核開發筆記:書內嵌入實驗任務 中的關於文件讀寫操作以及 os 相關的軟件用例部分內容。
使用 f.read() 讀取二進制文件,始終返回是 str 數據對象。 這就是的對於二進制文件讀取數據出現了問題。 現在通過測試,仍然沒有找到讀寫二進制文件的方法。
■ 相關文獻鏈接: