我想打开文件夹中的一系列子文件夹,找到一些文本文件并打印其中的几行。我使用的是:
configfiles = glob.glob('C:/Users/sam/Desktop/file1/*.txt')
但是这也不能访问子文件夹。有人知道如何使用相同的命令来访问子文件夹吗?
发布于 2013-02-10 21:47:12
要在立即子目录中查找文件,请执行以下操作:
configfiles = glob.glob(r'C:\Users\sam\Desktop\*\*.txt')
对于遍历所有子目录的递归版本,可以使用**
并传递recursive=True
since Python 3.5
configfiles = glob.glob(r'C:\Users\sam\Desktop\**\*.txt', recursive=True)
两个函数调用都返回列表。您可以使用glob.iglob()
逐个返回路径。或use pathlib
from pathlib import Path
path = Path(r'C:\Users\sam\Desktop')
txt_files_only_subdirs = path.glob('*/*.txt')
txt_files_all_recursively = path.rglob('*.txt') # including the current dir
这两种方法都返回迭代器(您可以逐个获取路径)。
发布于 2014-03-14 03:10:15
glob2包支持通配符,并且速度相当快
code = '''
import glob2
glob2.glob("files/*/**")
'''
timeit.timeit(code, number=1)
在我的笔记本电脑上,匹配>60,000 file paths大约需要2秒。
发布于 2013-02-12 09:12:10
您可以在Python2.6中使用Formic
import formic
fileset = formic.FileSet(include="**/*.txt", directory="C:/Users/sam/Desktop/")
披露-我是这个包的作者。
https://stackoverflow.com/questions/14798220
复制相似问题