Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Помогите исправить ошибку в скрипте Python. Он должен был открывать папку по пути и проверять все txt файлы

Ошибка: File "C:\Users\Administrator\Downloads\find.py", line 10
if filename.endswith(".txt"):
^
IndentationError: expected an indented block after 'for' statement on line 8

скрипт:
import os

path = r"C:\Users\Administrator\Downloads\cookies2" # путь до папки
word = '_|WARNING:'
sp = []

for filename in os.listdir(path):
if filename.endswith(".txt"):
filepath = os.path.join(path, filename)

with open(filepath, 'r', encoding='utf-8') as file:
data = file.readlines()

for line in data:
if word in line:
sp.append(line[line.index(word)::])

print('Готово')
print(f'Скопировано {len(sp)} строк')

with open('result.txt', 'w', encoding='utf-8') as file:
file.writelines(sp)

По дате
По рейтингу
Аватар пользователя
Знаток

А, видимо он не находит .txt файл, поэтому действия после if не идут из этого следует, что file_path - неизвестная переменная:

12345
 for filename in os.listdir(path):     
    if filename.endswith(".txt"):     
        filepath = os.path.join(path, filename)  
    else:  
        return print('Ошибка: .txt файлы не найдены!')  

Вот решение

Аватар пользователя
Гуру

А про отступы наверное забыли?

12345678910111213141516171819202122
 import os  
 
path = r"C:/Users/Administrator/Downloads/cookies2"  # путь до папки  
word = '_|WARNING:'  
sp = []  
 
for filename in os.listdir(path):  
    if filename.endswith(".txt"):  
        filepath = os.path.join(path, filename)  
 
    with open(filepath, 'r', encoding='utf-8') as file:  
        data = file.readlines()  
 
    for line in data:  
        if word in line:  
            sp.append(line[line.index(word)::])  
 
    print('Готово')  
    print(f'Скопировано {len(sp)} строк')  
 
    with open('result.txt', 'w', encoding='utf-8') as file:  
        file.writelines(sp)