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

2019-07-24 09:23:26来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

想用 递归实现多层次的 '.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传出来。

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


原文链接:https://www.cnblogs.com/hxf-zb/p/11190441.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python连接redis

下一篇:整合 User-Agent 大全汇总