我们来详细讲解一下“Python中列出目录中的文件的五种方法小结”。
1. 使用os.listdir
os.listdir(path)
方法可以返回指定路径下的所有文件和目录。通常用法如下:
import os
path = '/path/to/directory'
files = os.listdir(path)
for file in files:
print(file)
这个方法返回的是指定路径下所有的文件和目录对象的名称,但是不包含子目录中的文件和目录。如果要获得完整的路径,则需要使用os.path.join(path, file)来拼接路径。
2. 使用os.scandir
os.scandir(path)
方法和os.listdir
类似,都是用来获取目录下的所有文件和目录。不同的是,os.scandir返回的是一个目录迭代器,而不是字符串列表。这个方法在迭代大文件夹内的文件时会比os.listdir更快。
import os
path = '/path/to/directory'
with os.scandir(path) as entries:
for entry in entries:
if entry.is_file():
print(entry.name)
在这个例子中,我们使用了with语句,因为os.scandir返回的对象必须在使用完毕后关闭。该方法还有一个is_file()方法,可以用来过滤只有是文件的对象。
3. 使用glob.glob
glob.glob(pathname, *, recursive=False)
可以找到与给定的模式匹配的所有文件和目录。这是一个非常强大的工具,因为它可以使用正则表达式来过滤需要的文件。在pathname中,*
代表任何字符,?
代表一个字符,[seq]
代表seq中的任何字符,[!seq]
代表不在seq中的任何字符。
import glob
path = '/path/to/directory/*'
files = glob.glob(path)
for file in files:
print(file)
如果你需要在子目录中搜索文件,可以设置recursive为True。
4. 使用os.walk
os.walk(top, topdown=True, onerror=None, followlinks=False)
方法返回一个三元组,其中包含路径、目录集合和文件集合。这个方法用于递归遍历整个目录树。
import os
path = '/path/to/directory'
for root, directories, files in os.walk(path):
for filename in files:
print(os.path.join(root, filename))
在这个例子中,os.path.join
用来拼接文件的绝对路径。也可以在这个循环中处理文件夹,因为目录名称保存在directories列表中。
5. 使用pathlib.Path.glob
pathlib.Path.glob(pattern)
方法返回一个生成器,可以按照指定的通配符或正则表达式搜索文件。
import pathlib
path = pathlib.Path('/path/to/directory/')
for file in path.glob('*.txt'):
print(file)
在这个例子中,使用了pathlib库中的Path对象,用斜杠把路径指定了出来,然后使用glob方法找到所有的txt文件。
示例说明:
import os
path = './'
print("List all directories and files using os.listdir")
for file in os.listdir(path):
print(file)
print("List all files using os.scandir")
with os.scandir(path) as entries:
for entry in entries:
if entry.is_file():
print(entry.name)
print("List all txt files using glob.glob")
import glob
all_txt_files = []
all_files = glob.glob(path + '/*')
for file in all_files:
if file.endswith('.txt'):
all_txt_files.append(file)
print(all_txt_files)
print("List all files using os.walk")
for root, directories, files in os.walk(path):
for filename in files:
print(os.path.join(root, filename))
print("List all txt files using pathlib.Path.glob")
import pathlib
path = pathlib.Path(path)
for file in path.glob('*.txt'):
print(file)
在这个示例中,我们使用了这五种方法来列出目录中的文件和子目录。第一个方法使用os.listdir来列举出所有的文件和子目录。第二个方法使用os.scandir列举出所有的文件和子目录,但是它返回的是一个迭代器而不是列表。第三个方法使用glob.glob来匹配特定的文件类型,它使用通配符来查找文件。第四个方法使用os.walk来递归遍历整个目录树来查找文件。最后一个方法使用pathlib.Path.glob来查找文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中列出目录中的文件的五种方法小结 - Python技术站