python实现当前目录下所有文件是否包含指定字符串,包含显示内容并且显示文件名和行号
时间: 2024-02-17 15:02:22 浏览: 33
可以使用Python自带的文件处理模块os和re来实现该功能。具体步骤如下:
1. 使用os模块的listdir函数获取当前目录下所有的文件:
```python
import os
files = os.listdir('.')
```
2. 对于每个文件,使用Python自带的文件处理模块open函数打开文件,并逐行读取文件内容,判断是否包含指定的字符串。如果包含,则输出文件名和行号:
```python
import re
search_str = '指定字符串'
for file in files:
if os.path.isfile(file): # 判断是否为文件
with open(file, 'r', encoding='utf-8') as f:
for i, line in enumerate(f):
if re.search(search_str, line): # 判断是否包含指定的字符串
print(f'{file}: {i+1}: {line.strip()}')
```
其中,使用re模块的search函数来进行字符串匹配,enumerate函数来获取每行的行号。
以上就是实现当前目录下所有文件是否包含指定字符串的代码。需要注意的是,如果需要搜索子目录中的文件,可以使用os.walk函数来遍历目录树。
相关问题
python中读取txt文本时,如何判定包括某个字符串且下一行是空行的这一行的行数
可以使用Python的文件操作和字符串操作来实现这个功能。具体步骤如下:
1. 打开文件并逐行读取文本内容,使用`open()`和`readline()`函数实现。
2. 读取每一行文本内容后,使用`find()`函数查找是否包含目标字符串。
3. 如果包含目标字符串,使用`strip()`函数去除该行的空格和换行符,然后读取下一行文本内容。
4. 如果下一行文本内容为空行,则记录当前行的行号,否则继续读取下一行文本内容。
5. 循环执行以上步骤,直到读取完整个文本文件。
下面是一个示例代码:
```python
with open('file.txt', 'r') as f:
line_num = 0
while True:
line = f.readline()
if not line:
break
if 'target_string' in line:
next_line = f.readline().strip()
line_num += 1
if not next_line:
print(line_num)
```
其中,`file.txt`是要读取的文本文件的文件名,`target_string`是要查找的目标字符串。该代码会输出包含目标字符串且下一行是空行的行号。
python 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号
可以使用Python的traceback模块来实现一个简单的错误记录功能小模块。该模块提供了一些函数来跟踪和记录Python程序的异常信息。
首先,我们可以在产生错误的地方调用`traceback.format_exc()`函数,该函数会返回一个字符串,包含当前错误的堆栈跟踪信息。我们可以将这个字符串记录下来。
然后,我们可以使用`sys.exc_info()`函数来获取当前的异常信息。该函数返回一个元组,包含当前异常的类型、错误对象和跟踪对象。我们可以从跟踪对象中获取错误发生的文件名和行号信息。
接下来,我们可以将错误信息和堆栈跟踪信息写入一个文件或者输出到控制台。
下面是一个简单实现的示例代码:
```python
import traceback
import sys
def log_error():
try:
# 让程序产生一个错误
raise ValueError('示例错误')
except:
# 获取错误信息
error_type, error_value, error_traceback = sys.exc_info()
# 获取错误发生的文件名和行号信息
file_name = traceback.extract_tb(error_traceback)[-1].filename
line_number = traceback.extract_tb(error_traceback)[-1].lineno
# 将错误信息和堆栈跟踪信息记录下来
error_message = f'错误类型:{error_type}\n错误内容:{error_value}\n文件名:{file_name}\n行号:{line_number}\n堆栈跟踪:\n{traceback.format_exc()}'
with open('error_logs.txt', 'a') as f:
f.write(error_message + '\n')
# 或者直接输出到控制台
print(error_message)
# 调用函数进行错误记录
log_error()
```
运行以上代码后,程序会产生一个错误,并记录错误信息、错误文件名、行号和堆栈跟踪信息到名为`error_logs.txt`的文件中。你可以根据实际情况修改日志记录的方式。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)