首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用MicroPython迭代文件夹中的文件?

如何使用MicroPython迭代文件夹中的文件?
EN

Stack Overflow用户
提问于 2022-02-01 19:57:07
回答 2查看 274关注 0票数 0

我试图使用.asm MicroPython在sd卡中读取带有.py扩展名的所有文件。

我在这个问题中检查了答案,但它们不适用于MicroPython。

MicroPython没有globpathlib,在使用os库时尝试以下代码:

代码语言:javascript
复制
for file in os.listdir('/sd'):
        filename = os.fsdecode(file)
        if filename.endswith(".asm") or filename.endswith(".py"):
            print(filename)

我得到了这个错误'module' object has no attribute 'fsdecode'

我如何让它与MicroPython一起工作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-02 21:34:15

对于一个浅表的listdir来说,您不需要fsdecode,实际上它不是MicroPython os模块的一部分,请记住,MicroPython有一个优化的模块和方法子集。

代码语言:javascript
复制
for filename in os.listdir("/sd"):
    if filename.endswith(".asm") or filename.endswith(".py"):
        print(filename)

实际上,为了避免子文件夹,您应该检查类型,这可以通过使用os.ilistdir找到

代码语言:javascript
复制
for entry in os.ilistdir("/sd"):
    # print(entry)
    if entry[1] == 0x8000:
        filename = entry[0]
        if filename.endswith(".asm") or filename.endswith(".py"):
            print(filename)
票数 2
EN

Stack Overflow用户

发布于 2022-02-02 14:08:47

在正确的轨道上,os.listdir在任何版本的MicroPython上都能正常工作,但不会恢复子文件夹。

因此,您需要将文件夹与文件区分开来,如下所示。

代码语言:javascript
复制
"""Clean all files from flash 
use with care ; there is no undo or trashcan 
"""
import uos as os 

def wipe_dir( path=".",sub=True):
        print( "wipe path {}".format(path) )
        l = os.listdir(path)
        l.sort()
        #print(l)
        if l != ['']:
            for f in l:
                child = "{}/{}".format(path, f)
                #print(" - "+child)
                st = os.stat(child)
                if st[0] & 0x4000:  # stat.S_IFDIR
                    if sub:
                        wipe_dir(child,sub)
                        try:
                            os.rmdir(child)
                        except:
                            print("Error deleting folder {}".format(child))
                else: # File
                    try:  
                        os.remove(child)
                    except:
                        print("Error deleting file {}".format(child))

# wipe_dir(path='/')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70946767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档