call_me_idiot 2017-08-06 10:48 采纳率: 50%
浏览 995
已采纳

python 文件目录遍历代码 输出不对

def listAppendlist(l1,l2):
    for x in l2:
        l1.append(x);
def mylistAllFiles(pathstr):
    pathfiles = [];
    pathfilestmp = os.listdir(pathstr);
    for x in pathfilestmp:
        pathfiles.append(os.path.abspath(x));
    print(pathfiles);
    for x in pathfiles:
        print(x);
        if os.path.isdir(x):
            listAppendlist(pathfiles,mylistAllFiles(x));
    return pathfiles;
lfiles =  mylistAllFiles('D:\pythonWorkSpace')

实际目录结构如下:
D:\pythonWorkSpace\Demo.py
D:\pythonWorkSpace\DemoPro
D:\pythonWorkSpace\DemoPro.idea
D:\pythonWorkSpace\DemoPro.idea\DemoPro.iml
D:\pythonWorkSpace\DemoPro.idea\encodings.xml
D:\pythonWorkSpace\DemoPro.idea\misc.xml
D:\pythonWorkSpace\DemoPro.idea\modules.xml
D:\pythonWorkSpace\DemoPro.idea\workspace.xml
D:\pythonWorkSpace\DemoPro\com
D:\pythonWorkSpace\DemoPro\com\aruforce
D:\pythonWorkSpace\DemoPro\com\aruforce\demo
D:\pythonWorkSpace\DemoPro\com\aruforce\demo\Demo.py
D:\pythonWorkSpace\DemoPro\com\aruforce\demo\Demo2.py
D:\pythonWorkSpace\DemoPro\com\aruforce\demo\DocTestDemo.py
D:\pythonWorkSpace\DemoPro\com\aruforce\demo\GcDemo.py
D:\pythonWorkSpace\DemoPro\com\aruforce\demo\IODemo.py
D:\pythonWorkSpace\DemoPro\com\aruforce\demo\UnitestDemo.py
D:\pythonWorkSpace\DemoPro\com\aruforce\demo__init__.py
D:\pythonWorkSpace\DemoPro\com\aruforce\demo__pycache__
D:\pythonWorkSpace\DemoPro\com\aruforce__init__.py
D:\pythonWorkSpace\DemoPro\com\aruforce__pycache__
D:\pythonWorkSpace\DemoPro\com__init__.py
D:\pythonWorkSpace\DemoPro\com__pycache__
D:\pythonWorkSpace\HelloWorld.py
D:\pythonWorkSpace\test.jpg
D:\pythonWorkSpace\test2.jpg

lfiles 输出为:
D:\pythonWorkSpace\DemoPro\com\aruforce\demo\Demo.py
D:\pythonWorkSpace\DemoPro\com\aruforce\demo\DemoPro
D:\pythonWorkSpace\DemoPro\com\aruforce\demo\HelloWorld.py
D:\pythonWorkSpace\DemoPro\com\aruforce\demo\test.jpg
D:\pythonWorkSpace\DemoPro\com\aruforce\demo\test2.jpg
指数输出了一级目录

请帮满看看代码问题出在哪里?

  • 写回答

3条回答 默认 最新

  • call_me_idiot 2017-08-07 10:46
    关注

    解决了 os.path.isdir(x) 的问题。

     import os;# 操作系统lib
    def listAppendlist(l1,l2):
        for x in l2:
            l1.append(x);
    def mylistAllFiles(pathstr):
        pathfiles = os.listdir(pathstr);
        allfile = [];
        for x in pathfiles:
            filepath = os.path.join(pathstr,x)
            #print(filepath,os.path.isdir(filepath));
            allfile.append(filepath);
            if os.path.isdir(filepath):
                listAppendlist(allfile,mylistAllFiles(filepath));
        return allfile;
    allfiles = mylistAllFiles('D:\pythonWorkSpace')
    for x in allfiles:
        print(x);
    

    实际目录结构如下:
    D:\pythonWorkSpace\Demo.py
    D:\pythonWorkSpace\DemoPro
    D:\pythonWorkSpace\DemoPro.idea
    D:\pythonWorkSpace\DemoPro.idea\DemoPro.iml
    D:\pythonWorkSpace\DemoPro.idea\encodings.xml
    D:\pythonWorkSpace\DemoPro.idea\misc.xml
    D:\pythonWorkSpace\DemoPro.idea\modules.xml
    D:\pythonWorkSpace\DemoPro.idea\workspace.xml
    D:\pythonWorkSpace\DemoPro\com
    D:\pythonWorkSpace\DemoPro\com\aruforce
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo\Demo.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo\Demo2.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo\DocTestDemo.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo\GcDemo.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo\IODemo.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo\UnitestDemo.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo__init__.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo__pycache__
    D:\pythonWorkSpace\DemoPro\com\aruforce__init__.py
    D:\pythonWorkSpace\DemoPro\com\aruforce__pycache__
    D:\pythonWorkSpace\DemoPro\com__init__.py
    D:\pythonWorkSpace\DemoPro\com__pycache__
    D:\pythonWorkSpace\HelloWorld.py
    D:\pythonWorkSpace\test.jpg
    D:\pythonWorkSpace\test2.jpg

    程序输出为:
    D:\pythonWorkSpace\Demo.py
    D:\pythonWorkSpace\DemoPro
    D:\pythonWorkSpace\DemoPro.idea
    D:\pythonWorkSpace\DemoPro.idea\DemoPro.iml
    D:\pythonWorkSpace\DemoPro.idea\encodings.xml
    D:\pythonWorkSpace\DemoPro.idea\misc.xml
    D:\pythonWorkSpace\DemoPro.idea\modules.xml
    D:\pythonWorkSpace\DemoPro.idea\workspace.xml
    D:\pythonWorkSpace\DemoPro\com
    D:\pythonWorkSpace\DemoPro\com\aruforce
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo\Demo.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo\Demo2.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo\DocTestDemo.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo\GcDemo.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo\IODemo.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo\UnitestDemo.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo__init__.py
    D:\pythonWorkSpace\DemoPro\com\aruforce\demo__pycache__
    D:\pythonWorkSpace\DemoPro\com\aruforce__init__.py
    D:\pythonWorkSpace\DemoPro\com\aruforce__pycache__
    D:\pythonWorkSpace\DemoPro\com__init__.py
    D:\pythonWorkSpace\DemoPro\com__pycache__
    D:\pythonWorkSpace\HelloWorld.py
    D:\pythonWorkSpace\test.jpg
    D:\pythonWorkSpace\test2.jpg

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?