Я работаю над проектом кодирования python для цензуры определенных слов из txt файла. Большинство решений включают открытие txt-файла и сохранение его в переменной, а затем итерацию по строке. Я по-прежнему считаю эти результаты непоследовательными, поэтому пытаюсь использовать другой метод.
Пример кода:
def strip_by_list(email, list):
with open(email, 'r') as file:
filedata = file.read()
for term in list:
filedata.replace(term, "**REDACTED**")
return filedata
Я пытаюсь определить функцию, которая позволяет вводить файл, и список слов для проверки на возможное редактирование.
Назначенная функция кода
- Открыть выбранное электронное письмо как файл
- взять эти данные и сохранить их в переменной filedata
- перебирать термины в списке
- для каждого экземпляра этого слова, заменять его на УДАЛЕНО
- вернуть переменную filedata
Я продолжаю рисовать следующую ошибку: *** все каталоги
Ошибка:
Traceback (most recent call last):
File "/home********", line 45, in <module>
print(strip_by_list(email_two, proprietary_terms))
File "/home/********************", line 38, in strip_by_list
with open(email, 'r') as file:
OSError: [Errno 36] File name too long
Любой ввод приветствуется.
1-е обновление:
Как было предложено, я изменил код, чтобы сохранить информацию обратно в переменную:
def strip_by_list(email, list):
with open(email, 'r') as file:
for term in list:
file = file.replace(term, "**REDACTED**")
return file
- Это не помогло устранить ошибку. Он все еще пытается перечислить все содержимое сообщения в имени файла -
, чтобы ответить на другие вопросы
- Ubunutu linux filesystem
- путь к файлу очень длинный из-за количества подкаталогов
- файл был успешно открыт и использован в другой области кода.
например:
email_one = open("email_one.txt", "r").read()
Тогда используется здесь:
def censor(terms, email):
new_message = email.replace(terms, "*REDACTED*")
return new_message