Ваш код не является полным, поскольку вы не предоставляете входной файл IMAG0658.jpg
.Но кое-что еще можно сказать, и мы все равно можем ответить на ваш вопрос.
Из ваших заявлений о печати это выглядит как GPSLat.values[0]
и GPSLat.values[1]
оба значения int
.Но мы видим, что GPSLat.values[2]
выглядит как дробь и, следовательно, не является значением int
.Из вашей трассировки ошибок мы видим, что GPSLat.values[1]
или GPSLat.values[2]
на самом деле является экземпляром объекта.Таким образом, по крайней мере одно из этих значений печатается как числовое значение, но на самом деле является экземпляром объекта.
Решение вашей проблемы состоит в том, чтобы взять те очевидные числовые значения, которые показаны в функциях print
и, таким образом, доступнытакже с помощью функции str
и преобразуйте их в числовые значения перед дальнейшими вычислениями.Поскольку GPSLat.values[2]
не печатает как int, а печатает как дробь, мы можем использовать тип Fraction
в модуле fractions
, чтобы легко преобразовать в float
.Поэтому для каждого значения мы используем str
, чтобы получить числовое значение, а затем конвертируем его в фактическое числовое значение float
.
Таким образом, мы можем сделать
from fractions import Fraction
GPSDDLat = ( float(str(GPSLat.values[0]))
+ float(str(GPSLat.values[1])) / 60
+ float(Fraction(str(GPSLat.values[2]))) / 3600
)
Но безэтот файл, я не могу выполнить фактическую проверку этого кода.