要查找特定名称的文件并按照序号、文件名分行打印输出,我们可以使用Python中的os和re模块提供的功能。
以下是详细的步骤:
- 导入必要模块
首先,我们需要导入两个模块:os和re。os模块将帮助我们搜索目录中的文件,而re模块将帮助我们匹配特定名称文件。
import os
import re
- 定义文件名模式
接下来,我们需要定义文件名模式。为此,我们可以使用re.compile()函数创建一个正则表达式。
例如,我们要查找所有以“file”开头并以“txt”结尾的文件,可以如下定义:
pattern = re.compile("^file.*\.txt$")
- 遍历目录中的文件
现在,我们已经定义了需要查找的文件名模式,接下来我们要遍历目录中的所有文件。
我们可以使用os.walk()函数,它返回一个三元组(root, dirs, files),其中root是文件树的根节点,dirs是所有子目录的列表,files是当前目录中的所有文件列表。
for root, dirs, files in os.walk(topdir):
for file in files:
- 匹配文件名模式
对于每个文件,我们都需要检查它是否与我们想要的文件名模式匹配。我们可以使用正则表达式的match()函数进行匹配。
如果当前文件名符合要求,我们就将它存储到一个列表中,并给它一个序号。
if pattern.match(file):
match_files.append(file)
- 打印输出
match_files列表中包含了所有匹配的文件名,我们现在可以按照序号、文件名分行打印输出它们。
for i, file in enumerate(match_files):
print("{0}. {1}".format(i+1, file))
现在,我们把上述步骤整合一下,就得到了完整的Python程序:
import os
import re
topdir = "D:/mydir"
pattern = re.compile("^file.*\.txt$")
match_files = []
for root, dirs, files in os.walk(topdir):
for file in files:
if pattern.match(file):
match_files.append(file)
for i, file in enumerate(match_files):
print("{0}. {1}".format(i+1, file))
示例说明:
假设我们的目录结构如下:
- D:\
- mydir\
- file1.txt
- file2.txt
- dir1\
- file3.txt
- dir2\
- file4.txt
- file5.txt
让我们使用上述程序查找目录D:/mydir中的所有以“file”开头并以“txt”结尾的文件。
输出将如下所示:
1. file1.txt
2. file2.txt
3. file3.txt
4. file4.txt
5. file5.txt
我们可以看到,程序正确地找到了所有匹配的文件,并按照序号、文件名分行打印输出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python查找特定名称文件并按序号、文件名分行打印输出的方法 - Python技术站