如何使用Python遍历目录中的文件?
目录有时也称为文件夹,是系统文件系统中用于存储和定位文件或多个文件夹的单元组织结构。 Python作为一种脚本语言提供了多种方法来迭代目录中的文件。
以下是使用Python迭代目录中文件的各种方法:
方法一: os.listdir()
此函数返回给定目录中存在的文件和子目录的列表。我们可以使用os.path.isfile()函数过滤列表以仅获取文件:
例子:
Python3
# import required module
import os
# assign directory
directory = 'files'
# iterate over files in
# that directory
for filename in os.listdir(directory):
f = os.path.join(directory, filename)
# checking if it is a file
if os.path.isfile(f):
print(f)
Python3
# import required module
import os
# assign directory
directory = 'files'
# iterate over files in
# that directory
for filename in os.scandir(directory):
if filename.is_file():
print(filename.path)
Python3
# import required module
from pathlib import Path
# assign directory
directory = 'files'
# iterate over files in
# that directory
files = Path(directory).glob('*')
for file in files:
print(file)
Python3
# import required module
import os
# assign directory
directory = 'files'
# iterate over files in
# that directory
for root, dirs, files in os.walk(directory):
for filename in files:
print(os.path.join(root, filename))
Python3
# import required module
import glob
# assign directory
directory = 'files'
# iterate over files in
# that directory
for filename in glob.iglob(f'{directory}/*'):
print(filename)
输出:
方法二: os.scandir()
该方法用于获取指定路径给定目录中条目对应的os.DirEntry对象的迭代器。
例子:
蟒蛇3
# import required module
import os
# assign directory
directory = 'files'
# iterate over files in
# that directory
for filename in os.scandir(directory):
if filename.is_file():
print(filename.path)
输出:
方法三: pathlib模块
我们可以使用Path.glob()函数遍历目录中的文件,该函数在给定目录中匹配指定的模式并生成匹配的文件。 Path.glob('*')生成给定目录中的所有文件
例子:
蟒蛇3
# import required module
from pathlib import Path
# assign directory
directory = 'files'
# iterate over files in
# that directory
files = Path(directory).glob('*')
for file in files:
print(file)
输出:
方法四: os.walk()
我们也可以使用此方法搜索子目录,因为它会生成一个 3 元组(dirpath, dirnames, filenames) 。
- root :仅从您指定的内容中打印出目录。
- dirs :从根打印出子目录。
- files :打印出根目录和目录中的所有文件。
蟒蛇3
# import required module
import os
# assign directory
directory = 'files'
# iterate over files in
# that directory
for root, dirs, files in os.walk(directory):
for filename in files:
print(os.path.join(root, filename))
输出:
方法五: glob模块
glob.iglob()函数在匹配给定模式的路径名列表上返回一个迭代器。
例子:
蟒蛇3
# import required module
import glob
# assign directory
directory = 'files'
# iterate over files in
# that directory
for filename in glob.iglob(f'{directory}/*'):
print(filename)
输出: