Каталог файлов (Windows 10), в котором раньше хранилось множество сценариев «*.py».
Я хочу просмотреть сценарии .py, чтобы выяснить, какой из них содержит определенное ключевое слово.
Что было бы лучше, чем ниже, потому что часто возникает ошибка:
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position xxxx: invalid continuation byte
(Я также пытался использовать кодировку «latin-1» или читать сценарии в формате «rb»)
Спасибо.
import os, re
# Define the directory to search in and the keyword to look for
directory = '/path_to_directory'
keyword = 'the_keyword'
# Regular expression pattern to match the keyword
pattern = re.compile(r'\b{}\b'.format(re.escape(keyword)))
# Function to search for the keyword in a file
def search_in_file(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
for line_number, line in enumerate(file, start=1):
if pattern.search(line):
print(f'Found keyword "{keyword}" in {file_path} at line {line_number}:')
print(line.strip())
# Loop through the directory and its subdirectories
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.py'):
file_path = os.path.join(root, file)
search_in_file(file_path)
1 ответ
- Вы можете обработать исключение с помощью try/Exception.
Образец кода:
# Function to search for the keyword in a file
def search_in_file(file_path):
try:
with open(file_path, 'r', encoding='utf-8') as file:
# rest of the code
except UnicodeDecodeError:
print(f'Error decoding file: {file_path}')
- Вы получаете эту ошибку, возможно, потому, что некоторые файлы Python содержат символы в кодировке, отличной от UTF-8.
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.
ack
илиgrep
. или модуль Pythonast
также может работать, если вы знаете, что ключевое слово соответствует определенному объекту. также убедитесь, что вы используете кодировку, правильную для вашей среды . включите пример сценария, который выдает ошибку для более конкретного ответа