我有script.py文件,它遍历script.py文件所在目录中的特定文件。
脚本看起来像这样:
def my_funct(l):
Does stuff:
iterates over list of files
Does stuff:
globlist = glob.glob('./*.ext')
my_funct(glob list)
我希望不仅可以遍历此目录中的* .ext文件,而且可以遍历此目录中所有目录中的所有.ext文件。
我正在阅读关于os.walk的信息没有意义。
感谢。
答案 0 :(得分:1)
os.walk的一个例子。它搜索文件夹(和所有子文件夹)中的py文件并对行进行计数:
# abspath to a folder as a string
folder = '/home/myname/a_folder/'
# in windows:
# folder = r'C:\a_folder\'
# or folder = 'C:/a_folder/'
count = 0
lines = 0
for dirname, dirs, files in os.walk(folder):
for filename in files:
filename_without_extension, extension = os.path.splitext(filename)
if extension == '.py':
count +=1
with open(os.path.join(dirname, filename), 'r') as f:
for l in f:
lines += 1
print count, lines
答案 1 :(得分:1)
您可以scandir.walk(path)
os.walk(path)
使用pip install scandir
。它可以为os.walk()提供更快的结果。这个模块包含在python35中,但您可以使用import os
import scandir
folder = ' ' #here your dir path
print "All files ending with .py in folder %s:" % folder
file_list = []
for paths, dirs, files in scandir.walk(folder):
#for (paths, dirs, files) in os.walk(folder):
for file in files:
if file.endswith(".py"):
file_list.append(os.path.join(paths, file))
print len(file_list),file_list
使用python27,python34。
我的代码在这里:
number
scandir.walk()可以在os.walk()中完全按照你想要的那样做。
我希望这个答案与您的问题和scandir
的文档匹配答案 2 :(得分:0)
在Python标准库3.4和更高版本中,您可以使用pathlib
from pathlib import Path
files = Path().cwd().glob("**/*.ext")
它将返回生成器,其中包含当前目录和子目录中所有扩展名为“ .ext”的文件。您可以遍历这些文件
for f in files:
print(f)
# do other stuff
或者您可以一行完成:
for f in Path().cwd().glob("../*.ext"):
print(f)
# do other stuff