Python,逐步遍历文件夹(以运行脚本)
因为我对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))