python - Python re.compile 针对目录中的所有文件 - 不搜索所有文件
问题描述
我正在编写一个 Python 3.7.2 脚本,它使用 re.compile 搜索目录中的所有文件并返回出现特定字符串的每一行。它工作正常,除了两个问题:
- 目录中有数百个文件,但脚本仅针对前 25 个文件运行。
- 然后它无限期地重新运行前 25 个。
有什么建议么?这是脚本:
import os
import re
err_occur = []
pattern = re.compile(r"An important phrase")
path = "/users/mypath/"
for filename in os.listdir(path):
try:
with open(os.path.join(path, filename), encoding="UTF-8") as in_file:
for linenum, line in enumerate(in_file):
if pattern.search(line) != None:
err_occur.append((linenum, line.rstrip('\n')))
for linenum, line in err_occur:
print(line, sep='')
except FileNotFoundError:
print("Input file not found.")
解决方案
我认为您的问题可能与缩进有关。
我已经移动了一些代码并取消了内部 for 循环的缩进。试试这个代码:
import os
import re
err_occur = []
pattern = re.compile(r"An important phrase")
path = "/users/mypath/"
for filename in os.listdir(path):
try:
with open(os.path.join(path, filename), encoding="UTF-8") as in_file:
for linenum, line in enumerate(in_file):
if pattern.search(line) != None:
err_occur.append((linenum, line.rstrip('\n')))
except FileNotFoundError:
print("Input file not found.")
for linenum, line in err_occur:
print(line, sep='')
推荐阅读
- php - 类型提示闭包参数
- mysql - 在百万行表 LIMIT 37,22 或 LIMIT 100037,22 中执行需要更长的时间
- javascript - ReactDOM.render 不接受 JSX
- r - R 和包更新后 MCMClogit / model.matrix.default 中出现无法解释的警告消息
- keras - Keras 中 LSTM 的数学公式?
- python - 基于代理的模型python中的性能缓慢
- c - 调用 execv() 失败
- powershell - 如何读取文件的内容并忽略 PowerShell 上逗号后的值
- python - 训练 Keras 模型时使用稀疏数组表示标签
- powershell - 如何使 Send-MailMessage 中的附件可选?