用Python递归做个多层次的文件执行

想用 递归实现多层次的 '.py'执行但是发现好像不能

import os

def func(path):
    if os.path.isdir(path):
        for name in os.listdir(path):
            base_name = os.path.join(path, name)
            # print(base_name)
            return func(base_name)
    elif os.path.isfile(path) and path.endswith('.py)'):
        # print(path)
        return os.system('python %s' % path)

func(r'D:\GUIstudy\我要执行的文件')
D:\GUIstudy\我要执行的文件\快要找到我的文件了
D:\GUIstudy\我要执行的文件\快要找到我的文件了\马上就到了
D:\GUIstudy\我要执行的文件\快要找到我的文件了\马上就到了\到了
D:\GUIstudy\我要执行的文件\快要找到我的文件了\马上就到了\到了\radom练习.py

虽然可以找到最深层的文件,但是并没有出现预期的结果。

我觉得是os.system()立马执行了,好像不能 return 

def func(path):
    if os.path.isdir(path):
        for name in os.listdir(path):
            base_name = os.path.join(path, name)
            print(base_name)
            return func(base_name)
    elif os.path.isfile(path) and path.endswith('.py)'):
        # print(path)
        #return os.system('python %s' % path)
        return path


 os.system('python %s' % func(r'D:\GUIstudy\我要执行的文件'))

既然没有得到想要的结果,我就想返回文件路径, 在外面执行。但是发现报错了

D:\GUIstudy\我要执行的文件\快要找到我的文件了
D:\GUIstudy\我要执行的文件\快要找到我的文件了\马上就到了
D:\GUIstudy\我要执行的文件\快要找到我的文件了\马上就到了\到了
D:\GUIstudy\我要执行的文件\快要找到我的文件了\马上就到了\到了\radom练习.py
D:\Python\python.exe: can't open file 'None': [Errno 2] No such file or directory

看了下传出来是什么。

print(func(r'D:\GUIstudy\我要执行的文件'))
D:\GUIstudy\我要执行的文件\快要找到我的文件了
D:\GUIstudy\我要执行的文件\快要找到我的文件了\马上就到了
D:\GUIstudy\我要执行的文件\快要找到我的文件了\马上就到了\到了
D:\GUIstudy\我要执行的文件\快要找到我的文件了\马上就到了\到了\radom练习.py
None

看到这竟然返回的是None,说明递归没有把path传出来。

我觉得递归出了问题,现在还没想的明白,欢迎看到的大神解答。

posted @ 2019-07-15 17:56  浪上了天  阅读(474)  评论(0编辑  收藏  举报