EOFError в сценарии Python

Вы можете попробовать это

Select ISNULL(Cast(DateSent as Varchar(20)), 'N/A')

Ниже приводится один пример:

declare @DateSent date = getdate()
Select ISNULL(Cast(@DateSent as Varchar(20)), 'N/A')

Для нулевых значений, как показано ниже.

declare @DateSent1 date = NULL
Select ISNULL(Cast(@DateSent1 as Varchar(20)), 'N/A')
5
задан unwind 31 March 2009 в 13:17
поделиться

2 ответа

Если у Вас нет опечатки, проблема может быть в этой строке, где Вы присваиваете дескриптор файла selffp нет self.fp:

selffp=file("detailing.dat","rb")

Если это - опечатка, и Ваш код на самом деле открывает файл для self.fp, затем можно хотеть проверить, что файл на самом деле имеет содержание (т.е.: то, что предыдущий рассол работал)... ошибка предполагает, что файл пуст.

Править: В комментариях к этому ответу, S. У Lott есть хорошая сводка того, почему опечатка генерировала ошибку, Вы видели, что я вставляю здесь для полноты ответа: "selffp будет неиспользованным открытым файлом, и self.fp (старый закрытый файл) будет использоваться для загрузки".

14
ответ дан 18 December 2019 в 07:56
поделиться

Вот версия, которую я рекомендовал бы использовать:

def database(self):
    databasename=""
    host=""
    user=""
    password=""
    try:
        self.fp=open("detailing.dat","rb")
    except IOError:
        with open("detailing.dat", "wb") as fp:
            pickle.dump([databasename,host,user,password],fp,-1)

        self.fp=open("detailing.dat","rb")
        [databasename,host,user,password]=pickle.load(self.fp)

    return

Как был указан, на self.fp была опечатка. Но вот несколько других вещей, что я замечаю, что это может вызвать проблемы.

В первую очередь, Вы не должны использовать конструктора файла непосредственно. Необходимо вместо этого использовать встроенную открытую функцию.

Во-вторых, необходимо постараться не называть близкий метод файла вне наконец блок. В этом случае я использовал Python 2.6's с блоком. Можно использовать это в Python 2.5 со следующей командой:

from __future__ import with_statement

Это будет препятствовать тому, чтобы файл застрял открытый, если исключение будет выдано где-нибудь (поскольку это закроет файл, когда с блоком выйдется). Хотя это не причина Вашей проблемы, это - важная вещь помнить, потому что, если один из методов объекта файла выдает исключение, файл будет считаться открытый в sys.traceback неограниченно долго.

(обратите внимание, что необходимо, вероятно, принять ответ Jarret Hardie, хотя, он поймал ошибку :-))

5
ответ дан 18 December 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: