Как решить «ValueError: Операция ввода-вывода в закрытом файле», когда вывод результатов в файл? - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть фрагмент кода, который преобразует адреса электронной почты в HASH с использованием алгоритма SHA256.При выполнении кода ожидаемые результаты представлены, но когда я пытаюсь вывести результаты - я получаю сообщение об ошибке: ValueError: операция ввода-вывода для закрытого файла

import os
import hashlib

with open("emails.txt", "r") as text:
    for line in text.readlines():
        line = line.rstrip("\n")

        m = hashlib.sha256(line)
        print(m.hexdigest())

with open("Output.txt", "w") as text_file:
    for row in text:
        print row
        text_file.write("%s\n" % str(row))

может кто-нибудь помочьмне получить все результаты во внешний файл?

1 Ответ

0 голосов
/ 12 февраля 2019

Из-за строки for row in text: вы пытаетесь зациклить text, который на данный момент в скрипте является закрытым файлом.Вы можете структурировать код так:

import os
import hashlib

with open("emails.txt", "r") as text:
    with open("Output.txt", "w") as text_file:
        for line in text.readlines():
            line = line.rstrip("\n")
            m = hashlib.sha256(line.encode()).hexdigest() 
            print m
            print line
            text_file.write("%s:%s\n" % (str(line), m))
...