Python,逐步遍历文件夹(以运行脚本)

1 投票
2 回答
983 浏览
提问于 2025-04-16 17:49

因为我对Python不太熟悉,所以我想来这里问问。

总之,我有好几个文件夹(假设有20个文件夹)。

每个文件夹里还有更多的文件夹(假设每个有5个),

而在这些文件夹的每一个里面,还有一个文件夹,里面有我需要运行的脚本。

这个脚本的运行方式是这样的:比如用命令 'sh script.sh'。

基本上,我需要在每个文件夹里运行这个脚本,问题是我不知道怎么进入每个文件夹(这个脚本在原始文件夹的四层深处)。

总共有大约120个脚本需要以相同的方式运行(这个脚本还会返回一个数字,比如1表示成功,0表示失败),我需要记录这些结果(这应该不难搞定)。

那么,最好的办法是什么呢?检查结果我想我能搞定,但对于如何逐层进入这些子文件夹,我老实说对Python不太了解。

Just so everyones clear the folder structure is like this:
Top Level (20 or so folders)
 -->1 Below (5 or so Folders)
 ----->1 below one of these 5 folders (only 1 folder is contained)
 --------->1 below that one folder (here is where the script resides)

别问我为什么文件夹是这样结构的……哈哈。这最好是在Python 2中完成。

2 个回答

2

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能在使用一个叫做“库”的东西时,发现它的某些功能不太好用,或者在运行代码的时候出现了错误。这种情况下,我们通常会去网上找答案,像StackOverflow这样的网站就是一个很好的地方。

在这些网站上,很多人会分享他们遇到的问题和解决方案。你可以看到其他人是怎么解决类似的问题的,或者你也可以把自己的问题发上去,看看有没有人能帮你。总之,这些平台就像是一个大家一起讨论编程问题的社区,能帮助你更快地找到解决办法。

记住,遇到问题是很正常的,编程本身就是一个不断学习和解决问题的过程。只要你保持好奇心,愿意去探索,就一定能找到答案。

import glob,subprocess
for script in glob.glob('*/*/*/*.sh'):
   s = subprocess.Popen([script], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
   stdoutdata,stderrdata = s.communicate()
   returncode = s.returncode
   # Do something with stdoutdata, returncode etc. here
1

这可能有点复杂,但应该能奏效:

import os

root = '/foo/'

for directory, subdirectories, files in os.walk(root):
  for file in files:
     if os.path.splitext(file)[-1].lower() == '.sh':
       os.system('sh ' + os.path.join(directory, file))

撰写回答