当前位置:优草派 > 问答 > Python问答

python查找文件夹下所有文件

标签: Python  Python开发  Python  作者: hhkkhh

回答:

在Python中,要查找文件夹下所有的文件,可以使用os模块和os.walk()函数。os模块提供了访问操作系统功能的接口,os.walk()函数可以遍历一个目录下的所有子目录和文件,返回一个三元组(root,dirs,files),其中root表示当前正在遍历的文件夹的路径,dirs表示当前文件夹下的子文件夹列表,files表示当前文件夹下的文件列表。在这个基础上,我们可以通过递归调用os.walk()函数来遍历所有的文件夹,从而查找文件夹下所有的文件。

下面是一个简单的Python程序,可以查找指定文件夹下所有的文件:

```python

import os

def find_files(path):

for root, dirs, files in os.walk(path):

for file in files:

print(os.path.join(root, file))

if __name__ == '__main__':

find_files('/path/to/folder')

```

在这个程序中,我们定义了一个find_files()函数,它接受一个文件夹路径作为参数。在函数中,我们调用os.walk()函数遍历文件夹,然后循环遍历每个文件夹中的文件,使用os.path.join()函数将文件夹路径和文件名拼接起来,最后打印出文件的完整路径。

除了简单的查找文件夹下所有文件之外,我们还可以根据文件类型、修改时间、文件大小等条件来过滤文件。下面是一个带有过滤条件的程序示例:

```python

import os

import time

def find_files(path, ext=None, mtime=None, size=None):

for root, dirs, files in os.walk(path):

for file in files:

file_path = os.path.join(root, file)

if ext and not file.endswith(ext):

continue

if mtime and os.path.getmtime(file_path) < mtime:

continue

if size and os.path.getsize(file_path) < size:

continue

print(file_path)

if __name__ == '__main__':

find_files('/path/to/folder', ext='.txt', mtime=time.time() - 3600 * 24, size=1024)

```

在这个程序中,我们增加了三个过滤条件:文件扩展名、修改时间和文件大小。如果指定了这些条件,则只会输出符合条件的文件。在过滤条件中,我们使用了os.path.getmtime()和os.path.getsize()函数分别获取文件的修改时间和文件大小。mtime参数是一个时间戳,代表修改时间,我们可以使用time.time()函数获取当前时间戳,再减去指定的时间间隔,得到一个过去的时间戳,这样就可以查找指定时间范围内修改过的文件。size参数是一个文件大小的限制,单位是字节,如果文件大小小于指定值,则不会输出。

除了os.walk()函数之外,我们还可以使用glob模块来查找文件夹下的文件。glob模块提供了一个glob()函数,可以根据通配符匹配文件名,返回符合条件的文件列表。下面是一个使用glob模块查找文件夹下所有txt文件的示例:

```python

import glob

def find_files(path):

files = glob.glob(os.path.join(path, '*.txt'))

for file in files:

print(file)

if __name__ == '__main__':

find_files('/path/to/folder')

```

在这个程序中,我们使用os.path.join()函数将文件夹路径和通配符拼接起来,然后调用glob.glob()函数获取所有符合条件的文件列表,最后循环遍历输出文件路径。

TOP 10
  • 周排行
  • 月排行