criggidycroo Ответов: 2

Переменная не распознается, и я не знаю почему?


def errorgenerator():
    #Generates error messages and submits to the support team
    counter = open ("reports/counter.txt")
    counternum = int(counter.read())
    counternum = counternum + 1
    counter.close()


    counter = open ("reports/counter.txt", "w+")
    counter.write(int(counternum))
    counter.close()

    print("Apologies, we can not solve this issue. Please contact the supplier, to do this please leave your email to be further contacted by the supplier")
    email = input()

    print("Thank you, your error code is " +
    counter = open (("reports/report-" + int(counternum) + ".txt"), "w+")
    counter.write(email)
    counter.close() )

Этот код должен создать код ошибки с помощью counternum + 1, а затем записать его в файл рядом с электронной почтой пользователя. По какой-то причине код не распознает "счетчик" в counter.write(email). Кто-нибудь может сказать мне, почему и как это исправить?

Что я уже пробовал:

Я пробовал писать счетчики как str и int, но безрезультатно. Это были единственные вещи, которые я мог изменить.

Richard Deeming

Вы уверены, что это не email переменная, которая не распознается?

2 Ответов

Рейтинг:
14

Richard MacCutchan

Вы не можете написать int к текстовому потоку таким образом. Вы должны преобразовать его в строку, а затем повторно преобразовать на входе, например:

counter.write(str(counternum))

//
num = counter.read()
counternum = int(num) + 1
// write the updated value

Кроме того, не используйте "w+" при записи обновленного значения или вы просто получите файл последовательных чисел. Возможно, Вам будет лучше читать и писать в двоичном формате: см. 16.2. Ио — основные инструменты для работы с потоками и amp;mdash; не питон 3.3.6 документации[^].


Рейтинг:
1

HubSnippets

Привет,
Я бы посоветовал вам хорошенько проверить свои отступы. Это распространенная ошибка в программировании на Python.

Я не вижу выражения "counter.write(email)" в вашем коде.

С уважением