У меня есть сценарий, который я пытаюсь собрать вместе. Он делает много перетасовки чисел и еще много чего, он записывает использование ресурсов на локальном компьютере. Я повесил трубку на части скрипта. Я пытаюсь создать int из части строки. Вот проблемная часть сценария ...Тип STR не меняется на INT в Python 2.7
j = item[11:len(item)]
if j.endswith("L"):
j = int(j[0:len(j)-1])
print type(j)
элемента является строкой, которая получается из длинного ряда струнной нарезки/расщепления. В этом случае элемент будет похож на нечто похожее на это: «bytes_recv = 3829381938203L» или «bytes_recv = 1302». Эти четыре строки обрезают не десятичные символы, а затем удаляют конечный L, если они есть, а затем печатают тип переменной J, которая в моей голове должна быть целым числом из-за третьей строки в моем коде, где она устанавливает ее в int с int(). Когда я запускаю скрипт, он никогда не перестает говорить мне, что переменная типа j является «str». Это делает мой сценарий бросить на себя, когда она попадет эту следующую строку коды,
sndf = int(((float(int(j) - ndic[nds][len(ndic[nds])-1])/1024)/1024))
NDIC словарь содержит работает списки точек данных от мониторинга ресурсов для использования в графиках позже. Эта строка кода берет последнюю запись из списка словаря и вычитает ее из нашего значения j, а затем разделяет эту сумму на 1024, дважды. Я не думаю, что вышеуказанная строка кода способствует ошибке, но может быть, я включил ее. Вот ошибка, которую я получаю при выполнении сценария:
TypeError: unsupported operand type(s) for -: 'int' and 'str'
Получаю эту ошибку в строке кода sndf =.
Согласовано. Как правило, я склонен рассматривать все логические возможности и разбираться с ними явно, поэтому ничего не забывается. Это означает больше строк кода, но это также означает меньшую двусмысленность в отношении вещей, которые не были рассмотрены. – ericmjl
Это не то, что вызывает исключение, потому что он вызывает 'int (j)' на линии, которая делает вычитание. – interjay
Хорошая мысль, я не обратил на это внимания. – omz