创客.掌控板.储存
储存
有时你需要存储有用的信息。这些信息存储为数据:信息的表示(当存储在计算机上时以数字形式)。
如果您将数据存储在计算机上,即使您关闭再打开设备,它也应该保留。
microPython位允许您使用非常简单的文件系统来完成此操作。
什么是文件系统?
它是一种以持久方式存储和组织数据的方法 - 存储在文件系统中的任何数据都应该在设备重启后继续存在。
顾名思义,存储在文件系统中的数据被组织成文件。
计算机文件是存储在文件系统上的命名数字资源。这些资源包含有用的信息作为数据。 这正是纸质文件的工作原理。它是一种包含有用信息的命名容器。通常,纸质和数字文件都会被命名以指示它们包含的内容。
在计算机上,通常使用 .xxx 后缀结束文件。通常,表示使用什么类型的数据来表示信息。 例如, .txt 表示文本文件, .jpg JPEG图像和 .mp3 编码为MP3的声音数据。
某些文件系统(例如笔记本电脑或PC上的文件系统)允许您将文件组织到目录中:命名容器将相关文件和子目录组合在一起。
但是,MicroPython提供的文件系统是一个平面文件系统。平面文件系统没有目录 - 所有文件都只存储在同一个地方。
Python编程语言包含易于使用且功能强大的方式来使用计算机的文件系统。mPython上的MicroPython实现了这些功能的有用子集 ,使其易于在设备上读取和写入文件,同时还提供与其他Python版本的一致性。
打开文件
以下为Python File操作的相关操作说明。
open()方法:
#open(路径+文件名,读写模式) ,如 f=open('/tmp/hello','w') #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件。如:'rb','wb','r+b'等等 读写模式的类型有: rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278) w 以写方式打开, a 以追加模式打开 (从 EOF 开始, 必要时创建新文件) r+ 以读写模式打开 w+ 以读写模式打开 (参见 w ) a+ 以读写模式打开 (参见 a ) rb 以二进制读模式打开 wb 以二进制写模式打开 (参见 w ) ab 以二进制追加模式打开 (参见 a ) rb+ 以二进制读写模式打开 (参见 r+ ) wb+ 以二进制读写模式打开 (参见 w+ ) ab+ 以二进制读写模式打开 (参见 a+ )
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:
file.read([size]) #size未指定则返回整个文件,如果文件大小>2倍内存则有问题.f.read()读到文件尾时返回""(空字串) file.readline() #返回一行 file.readline([size]) #返回包含size行的列表,size 未指定则返回全部行 for line in f: print line #通过迭代器访问 file.write("hello\n") #如果要写入字符串以外的数据,先将他转换为字符串. file.tell() #返回一个整数,表示当前文件指针的位置(就是到文件头的字节数)。 file.seek(偏移量,[起始位置]) #用来移动文件指针,偏移量:单位:字节,可正可负,起始位置:0-文件头,默认值;1-当前位置;2-文件尾。 file.close() #关闭文件
有关更多的open()使用,可查阅 :term:CPython 文档:open() <https://docs.python.org/3.5/library/functions.html#open>_。
通过该 open 功能实现在文件系统上读取和写入文件。打开文件后,您可以使用它直到关闭它(类似于我们使用纸质文件的方式)。
确保这一点的最好方法是使用如下with语句:
with open('story.txt') as my_file: content = my_file.read() print(content)
该 with 语句使用该 open 函数打开文件并将其分配给对象。在上面的示例中,该 open 函数打开调用的文件 story.txt (显然是包含某种故事的文本文件)。 调用用于表示Python代码中的文件的对象 my_file 。 随后,在 with 语句下面缩进的代码块中,该 my_file 对象用于 read() 文件的内容并将其分配给 content 对象。
这是重要的一点,包含该 print 语句的下一行不是缩进的。与 with 语句关联的代码块只是读取文件的单行。
一旦与该 with 语句关联的代码块关闭,Python(和MicroPython)将自动为您关闭该文件。
这称为上下文处理,该 open 函数创建的对象是文件的上下文处理程序。
简而言之,与文件交互的范围由与with打开文件的语句关联的代码块定义。
困惑?
不要。我只是说你的代码应该是这样的:
with open('some_file') as some_object: # 在这段代码块中完成文件的读写 # 当块完成时,然后使用MicroPython # 自动为您关闭文件。
就像纸质文件一样,打开文件有两个原因:读取其内容(如上所示)或向文件写入内容。 默认模式是读取文件。如果要写入文件,则需要 open 按以下方式告诉函数:
with open('hello.txt', 'w') as my_file: my_file.write("Hello, World!")
请注意,该 'w' 参数用于将 my_file 对象设置为写入模式。 您还可以传递一个 'r' 参数来将文件对象设置为读取模式,但由于这是默认设置,因此通常会将其保留。
将数据写入文件是通过(您猜对了) write 方法完成的,该方法将您要写入文件的字符串作为参数。 在上面的示例中,我将文本“Hello,World!”写入名为“hello.txt”的文件中。
注解:
* 当您打开文件并写入时(可能在文件处于打开状态时多次),如果文件已经存在,您将编写文件内容。 * 如果要将数据附加到文件,则应首先将其读取,将内容存储在某处,关闭它,将数据附加到内容中,然后打开它以使用修改后的内容再次写入。
OS
除了读写文件外,Python还可以操作它们。您当然需要知道文件系统中的文件,有时您也需要删除它们。
在常规计算机上,操作系统(如Windows,OSX或Linux)的角色是代表Python管理它。
Python中通过一个名为的模块提供了这样的功能os。 由于MicroPython 是操作系统,我们决定在os 模块中保持适当的功能以保持一致性,这样当您在笔记本电脑或Raspberry Pi等设备上使用“常规”Python时,您就会知道在哪里可以找到它们。
基本上,您可以执行与文件系统相关的三个操作:列出文件,删除文件并询问文件的大小。
要列出文件系统上的文件,请使用该listdir功能。它返回一个字符串列表,指示文件系统上文件的文件名:
import os my_files = os.listdir()
要删除文件,请使用该remove功能。它需要一个字符串来表示要删除的文件的文件名作为参数,如下所示:
import os os.remove('filename.txt')
os常用的方法:
os.chdir(path) #修改路径 os.getcwd() #获取当前路径 os.listdir(dir) #目录列表 os.mkdir(dir) #创建目录 os.remove(path) #删除文件 os.rmdir(dir) #删除目录 os.rename(old_path, new_path) #文件改名 os.stat(path) #文件/目录状态,具体解释如下:
有关更多的os模块使用,可查阅 :mod:os 模块章节。
主程序 main.py
boot.py和main.py,这两个文件在启动时由MicroPython专门处理。 首先执行boot.py脚本(如果存在),然后在完成后执行main.py脚本。
此外,如果您将其他Python文件复制到文件系统上,那么 import就像其他任何Python模块一样。
例如,如果您有一个 hello.py 包含以下简单代码的文件:
def say_hello(name="World"): return "Hello, {}!".format(name)
你可以导入并使用这样的 say_hello 函数:
from mpython import * from hello import say_hello oled.DispChar(say_hello(),0,0) oled.show()
注解:
如果除了MicroPython运行时之外还在设备上刷过了一个脚本,那么MicroPython将忽略main.py并运行您的嵌入式脚本。 要仅刷新MicroPython运行时,只需确保您在编辑器中编写的脚本中包含零个字符。一旦闪存,您就可以复制main.py文件。
<< 上一篇
下一篇 >>
网友留言(0 条)