为了账号安全,请及时绑定邮箱和手机立即绑定

Python - 递归地浏览目录并在文本文件中打印文件或空目录

Python - 递归地浏览目录并在文本文件中打印文件或空目录

白衣染霜花 2022-09-13 09:58:20
我是一个python新手,我给了一个任务,不断进入一个目录并获取一个空的子目录或一个文件。如果目录为空,则应将路径写入文件夹.txt,如果目录中有文件,则应写入该文件的路径。例如:目录 a 包含:a/apple/mango/ess.txta/gat.xmla/apple/asl/cdr/opa/est.pya/apple/dse/a/dews输出(文件夹.txt)文件应为 :a/apple/dse/a/dews输出(文件.txt)文件应为:a/apple/mango/ess.txta/gat.xma/apple/asl/cdr/opa/est.py我尝试使用这个逻辑:        for subdir, dirs, files in os.walk(path):            for files in dirs:                fp1 = (os.path.join(path, files))                print (fp1)                if len(os.listdir(fp1)) == 0:                    print("Directory is empty")                    folder_added.write("\n Empty folder found %s \n" % (fp1))但它只持续到两个子文件夹。
查看完整描述

1 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

您走在正确的轨道上。此循环的每次迭代都描述一个新目录。在每个目录中,您要首先检查 列表是否为空。如果为空,则将目录路径(在下面的示例中)写入文件。如果 不为空,您可以循环访问它并将文件名写入其他输出文件:filesrootfiles


f_folders = open('folders.txt', 'w')

f_files = open('files.txt', 'w')


for root, dirs, files in os.walk('.'):

    if not files:

        # Empty directory

        f_folders.write(root + '\n')

    else:

        for f in files:

            fpath = os.path.join(root, f)

            f_files.write(fpath + '\n')


查看完整回答
反对 回复 2022-09-13
  • 1 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信