ValueError: недопустимый литерал для int () с основанием 10: '' - PullRequest
213 голосов
/ 03 декабря 2009

Я создаю программу, которая читает файл, и если первая строка файла не пуста, она читает следующие четыре строки. Вычисления выполняются на этих строках, а затем читается следующая строка. Если эта строка не пуста, она продолжается. Однако я получаю эту ошибку:

ValueError: invalid literal for int() with base 10: ''.

Он читает первую строку, но не может преобразовать ее в целое число.

Что я могу сделать, чтобы решить эту проблему?

код:

file_to_read = raw_input("Enter file name of tests (empty string to end program):")
try:
    infile = open(file_to_read, 'r')
    while file_to_read != " ":
        file_to_write = raw_input("Enter output file name (.csv will be appended to it):")
        file_to_write = file_to_write + ".csv"
        outfile = open(file_to_write, "w")
        readings = (infile.readline())
        print readings
        while readings != 0:
            global count
            readings = int(readings)
            minimum = (infile.readline())
            maximum = (infile.readline())

Ответы [ 13 ]

0 голосов
/ 05 декабря 2018

Я столкнулся с той же проблемой, когда пытался использовать readlines () внутри цикла for для одного и того же файлового объекта ... Я подозреваю, что запуск readling () внутри readline () для того же файлового объекта вызвал эту ошибку.

Лучшим решением может быть использование seek (0) для сброса указателя файла или Обработайте условие, установив некоторый флаг, затем создайте новый объект для того же файла, проверив установленное условие ....

0 голосов
/ 12 марта 2013

Я получал похожие ошибки, оказалось, что в наборе данных были пустые значения, которые python не мог преобразовать в целое число.

0 голосов
/ 03 декабря 2009

Я создаю программу, которая читает файл и если первая строка файла не пустой, он читает следующие четыре линий. Расчеты выполнены на эти строки, а затем следующая строка читать.

Как-то так должно работать:

for line in infile:
    next_lines = []
    if line.strip():
        for i in xrange(4):
            try:
                next_lines.append(infile.next())
            except StopIteration:
                break
    # Do your calculation with "4 lines" here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...