7474|6

111

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

micropython文档中缺失的说明 [复制链接]

 
我一直在micropython文档中寻找关于文件操作的函数,但是官方文档中根本没有。只是提到其路径:/flash和/sd,分别对应内置Flash ROM文件系统和外置TF卡槽。所以我想或许类似于标准Python3的实现。

micropython的库
micropython支持四种库:
  • micropython内置库
  • 标准库
  • 微型库
  • pyboard库
但即使是标准库和微型库里面也没有提到最重要的os,sys模块。作者或许太忙了。我们来补上!请Ctrl+D进入REPL。

  1. PYB: sync filesystems
  2. PYB: soft reboot
  3. MicroPython v1.6-310-g1937953 on 2016-03-28; PYBv1.0 with STM32F405RG
  4. Type "help()" for more information.
  5. >>>import os, sys
  6. >>> dir(os)
  7. ['__name__', 'uname', 'chdir', 'getcwd', 'listdir', 'mkdir', 'remove', 'rename', 'rmdir', 'stat', 'statvfs', 'unlink', 'sync', 'sep', 'urandom', 'dupterm', 'mount', 'umount', 'mkfs']
  8. >>> dir(sys)
  9. ['__name__', 'path', 'argv', 'version', 'version_info', 'implementation', 'platform', 'byteorder', 'maxsize', 'exit', 'stdin', 'stdout', 'stderr', 'modules', 'print_exception']
  10. >>> os.getcwd()
  11. '/sd'
  12. >>> os.listdir('/flash')
  13. ['main.py', 'pybcdc.inf', 'README.txt', 'boot.py', 'demo.py', 'modem.py', 'demo2.py', 'sch_demo.py', 'SPI_demo.py']
  14. >>> os.listdir('/sd')
  15. ['HTSC','documents', '.LOST.DIR', 'log', 'bddownload']
  16. >>> fp = open('/flash/boot.py','r')
  17. >>> for line in fp:
  18. ...     print(line)
  19. ...
  20. ...
  21. # boot.py -- run on boot-up
  22. # can run arbitrary Python, but best to keep it minimal
  23. import machine
  24. import pyb
  25. pyb.main('SPI_demo.py')
  26. #pyb.main('main.py') # main script to run after this one
  27. #pyb.usb_mode('CDC+MSC') # act as a serial and a storage device
  28. #pyb.usb_mode('CDC+HID') # act as a serial device and a mouse
  29. >>> fp.close()
  30. >>>
  31. >>> fp = open('/flash/test.txt','w+')
  32. >>> fp.write('hello ')
  33. 6
  34. >>> fp.write('world\r\n')
  35. 7
  36. >>> fp.write('allankliu')
  37. 9
  38. >>> fp.close()
  39. >>> fp = open('/flash/test.txt','r')
  40. >>> for line in fp:
  41. ...     print(line)
  42. ...
  43. ...
  44. ...
  45. hello world
  46. allankliu
  47. >>> os.listdir('/flash')
  48. ['main.py', 'pybcdc.inf', 'README.txt', 'boot.py', 'demo.py', 'modem.py', 'demo2.py', 'sch_demo.py', 'test.txt', 'SPI_demo.py']
  49. >>> os.unlink('/flash/test.txt')
  50. >>> os.listdir('/flash')
  51. ['main.py', 'pybcdc.inf', 'README.txt', 'boot.py', 'demo.py', 'modem.py', 'demo2.py', 'sch_demo.py', 'SPI_demo.py']
复制代码

在Python2/3中,和文件、目录操作的库主要是os,os.path和shutil。从dir()来看,micropython只实现了os库和内置函数open()/close()/read()/read()等。也可以创建和删除文件unlink()。

在micropython的/sd和/flash文件系统中满足嵌入式系统的基本需求是没有问题的:可以从文件中读取配置信息(比如JSON或CSV),也可以向文件中存储数据信息满足数据采集和Log日志。





最新回复

汇总在此: 【MicroPython】——by allankliu https://bbs.eeworld.com.cn/forum ... 2739&fromuid=536508  详情 回复 发表于 2016-6-17 11:31

赞赏

1

查看全部赞赏

点赞 关注(3)
 
 

回复
举报

2721

帖子

0

TA的资源

纯净的硅(中级)

沙发
 
谢谢分享学习一下
 
 
 

回复

1万

帖子

25

TA的资源

版主

板凳
 
 
 

回复

1万

帖子

25

TA的资源

版主

4
 
os.remove()也是删除文件吧,它和os.unlink有什么区别?
 
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

5
 
我记得doc里有提到了os模块
但是按官方的说法,好像都被micro化了。楼主说的标准库应该不只这样吧?
我理解应该是包括标准py3的所有的内建。

点评

micropython不太可能支持Py3的所有标准库(standard library)的,因为标准库分为四十几个大类几百种库。即使是某些内建函数(builtin functions)都直接抛Not Implemented。 micropython库 cmath,复数相关库  详情 回复 发表于 2016-5-27 10:56
 
 
 

回复

111

帖子

0

TA的资源

一粒金砂(高级)

6
 
Onsunsl 发表于 2016-5-16 22:01
我记得doc里有提到了os模块
但是按官方的说法,好像都被micro化了。楼主说的标准库应该不只这样吧?
我理 ...

micropython不太可能支持Py3的所有标准库(standard library)的,因为标准库分为四十几个大类几百种库。即使是某些内建函数(builtin functions)都直接抛Not Implemented。

micropython库
cmath,复数相关库
gc,垃圾回收
math,算术计算库
os,基本文件操作系统库
select,在streams上等待事件的异步库(目前仅支持UART/USB_VCP两种对象)
struct,pack/unpack基础数据类型原语
sys,系统相关函数
time,事件相关函数

Python微型库
ubinascii,二进制/ASCII转换
uctypes,访问C数据结构
uhashlib,Hash算法
uheapq,堆队列算法
ujson,JSON编解码
ure,正则表达式
usocket,套接字模块
uzlib,zlib解压缩

PythonBoard相关硬件库
PythonBoard相关的库名称为pyb。
pyb.delay(ms),延时若干毫秒
pyb.udelay(us),延时若干微秒
pyb.millis(),返回复位后毫秒数
pyb.micros(),返回复位后微秒数
pyb.elapsed_millis(start),返回start后毫秒数
pyb.elapsed_micros(start),返回start后微秒数
pyb.hard_reset(),MCU系统硬复位
pyb.bootloader(),软件进入Bootloader模式
pyb.disable_irq(),关闭中断
pyb.enable_irq(),使能中断
pyb.freq(sysclk, hclk, pclk1, pclk2),设置或者读取系统时钟配置
pyb.wfi(),等待中断
pyb.stop(),进入sleep模式
pyb.standby(),进入deep sleep模式
pyb.info(),打印硬件版的信息
pyb.main(filename),设置boot.py之后运行的主程序名称
pyb.mount(device, mount, *, readonly, mkfs),安装块设备上的文件系统
pyb.repl_uart(uart),设置/读取REPL所在UART
pyb.rng(),返回30bit随机数
pyb.sync(),同步文件系统
pyb.unique_id(),返回MCU的12B(96bit)唯一串号

其他硬件相关类
Accel:加速度计
ADC:模数转换器
CAN:CAN总线
DAC:数模转换器
ExtInt:外部中断事件处理
I2C:I2C总线
LCD:带触摸屏的液晶驱动
LED:LED对象
Pin:GPIO
PinAF:引脚其他功能
RTC:实时时钟
Servo:三线制伺服电机驱动
SPI:SPI总线主机驱动
Switch:开关
Timer:内部时钟
TimerChannel:时钟通道
UART:双工串行通讯
USB_VCP:USB虚拟串口

network库
物联网时代网络接口不可少,microPython的network库内置对于TI CC3000以及Wiznet W5200的WiFi芯片支持。这包含了网络驱动和路由配置。配置后的接口可以通过socket编程。

micropython-lib
这是作者针对UNIX分支而设计的micropython标准库。不过必须基于Linux/Unix。早前的ARM9开发板很适用。树莓派之类的已经可以使用Ubuntu/Debian之类的标准Linux(ARM版),micropython就显得不够完整。虽然micropython的运行速度比传统CPython可能更快。(至少我做的pystone对比试验说明micropython VM比CPython VM要快一些。)
 
 
 

回复

1万

帖子

2853

TA的资源

管理员

7
 
汇总在此:
【MicroPython】——by allankliu
https://bbs.eeworld.com.cn/forum ... 2739&fromuid=536508
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表