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

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

用Python递归做个多层次的文件执行的更多相关文章

  1. python递归删除目录本身以及目录下文件

    import os def local_rm(dirpath): if os.path.exists(dirpath): files = os.listdir(dirpath) for file in ...

  2. python 递归进阶操作方法

    递归 在函数内部,可以调用其他函数; 如果一个函数在内部调用自身本身,这个函数就是递归函数. 例如,我们来计算阶乘: n! = 1 x 2 x 3 x ... x n, 用函数f1(n)表示,可以看出 ...

  3. Python来做应用题及思路

    Python来做应用题及思路 最近找工作头疼没事就开始琢磨python解应用题应该可以,顺便还可以整理下思路当然下面的解法只是个人理解,也欢迎大佬们给意见或者指点更好的解决办法等于优化代码了嘛,也欢迎 ...

  4. python --> 递归 以及装饰器

    一.递归知识 函数迭套执行,逐层执行之后,满足某个条件之后就会停止执行,将return值返回上层的函数,上层函数再逐层返回,最终返回给最初始函数. 递归在斐波那契数列的应用[斐波那契数列特点:前两个数 ...

  5. Python递归_打印节点信息

    Python递归_打印节点信息 递归特性:1.必须由一个明确的结束条件2.每次进入更深一层递归时,问题规模相比上一次递归都应该有所减少3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用时 ...

  6. Python递归优化方法

    递归栈溢出 Python的递归调用栈的深度有限制,默认深度为998,可以通过sys.getrecursionlimit()查看. 针对递归栈溢出,我们可以将默认深度设置为大一些,这样不会报错,但是再大 ...

  7. 学了Python可以做什么工作

    学了Python可以做什么工作 用 Python 写爬虫 据我所知很多初学 Python 的人都是使用它编写爬虫程序.小到抓取一个小黄图网站,大到一个互联网公司的商业应用.通过 Python 入门爬虫 ...

  8. Python递归的经典案例

    目录 : 一.递归的简介 二.递归的经典应用   2.1 递归求阶乘   2.2 递归推斐波那契数列   2.3 二分法找有序列表指定值   2.4 递归解汉诺塔 前言: 当我们碰到诸如需要求阶乘或斐 ...

  9. 你都用python来做什么?

    首页发现话题   提问     你都用 Python 来做什么? 关注问题写回答     编程语言 Python 编程 Python 入门 Python 开发 你都用 Python 来做什么? 发现很 ...

随机推荐

  1. 检查cgroup v2 是否安装

    cgroup 当前包含了v1, 以及v2 版本,v2 版本相比v1 在目录组织上更加清晰,管理更加方便,很多 时候我们可能需要检查我们安装的内核当前内核版本是否支持cgroup v2 文章内容来自 h ...

  2. Python 下载超大文件

    使用python下载超大文件, 直接全部下载, 文件过大, 可能会造成内存不足, 这时候要使用requests 的 stream模式, 主要代码如下 iter_content:一块一块的遍历要下载的内 ...

  3. 群晖采用root用户登录

    在控制面板中开启 ssh 登录 通过有 管理员权限的用户登录 通过输入 sudo -i 或者 sudo su - , 然后输入当前用户密码, 进入 root 输入如下命令可以修改root 用户的密码 ...

  4. tomcat9源码导入idea

    maven部署 下载源码 tomcat最新版的github地址 tomcat9官网下载 步骤 源码根目录新建 home 文件夹 把 conf 文件夹和 webapps 文件夹移动到 home 文件夹 ...

  5. Centos 7 更换为 阿里云 yum 源

    地址: https://opsx.alibaba.com/ 操作步骤: 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentO ...

  6. shell 杀死80端口的所有进程

    netstat -lnp|grep |grep -v grep |awk

  7. mysql5.7 之 sql_mode=only_full_group_by问题

    在使用查询时,使用到了group by 分组查询,报如下错误: ERROR (): In aggregated query without GROUP BY, expression # of SELE ...

  8. Kali linux 2018 安装 Fluxion

    本人是在VMware 12下安装 Kali linux 2018.2版本 安装完成后 用命令行运行更新   apt-get update apt-get full-upgrade   更新所有组件. ...

  9. Kafka(四) —— KafkaProducer源码阅读

    一.doSend()方法 Kafka中的每一条消息都对应一个ProducerRecord对象. public class ProducerRecord<K, V> { private fi ...

  10. pdfBox 解析 pdf文件

    Spting boot 项目 1.添加依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifa ...