2016-03-12 1 views
0

У меня проблема с преобразованием строк в целые числа, поэтому я могу выполнять математические функции. Я читал о str() и int(), но он, похоже, не работает здесь. Я пытаюсь сохранить данные из одной программы в файл, расположенный на моей карте Raspberry Pi 2 SD, используя код, показанный ниже; проблемная область отмечена в CAPS у основания. Я узнал, что все данные, сохраненные в файле, находятся в строчном формате. Так что нет проблем, просто преобразовать его обратно в целое, когда я получаю следующее сообщение об ошибке:Преобразование строки в целое из файла, расположенного на SD-карте

ValueError: invalid literal for int() with base 10

Я пробовал версий Python 2 и 3 на моем Raspberry Pi 2. Причина этого заключается в том, что у меня есть счетчик в моя основная программа, которую я хочу обновить с ее последней позицией в случае потери мощности для малины Pi.

Я вытягиваю свои волосы на этом. Может кто-то, пожалуйста, помогите мне найти ответ. Я не смог найти его сам в Интернете или в двух книгах Python, которые я приобрел.

from __future__ import print_function 
import datetime #date and time library 
# We begin by creating the file and writing some data. 
webcam_home = open("home.txt", "a") 
n = 1 
m = 10 
for i in range(0,5): 
    n = n*10 
    m = m*2 
    webcam_home.write(str(n)) 
    webcam_home.write("%s\n" % m) 
webcam_home.close() 

# Now, we open the file and read the contents printing out 
# those rows that have values in 

webcam_home = open("home.txt", "r") 

rows = webcam_home.readlines(); 
for row in rows: 
    print(">", row) 
    A = row 
    print("6",int("A")+1,"abc") 

webcam_home.close() 
+2

Попробуйте 'int (A.rstrip())' вместо 'int (" A ")'. '' A '' is * not * действительный литерал для 'int()' с базой 10. – zondo

+0

Вы пытаетесь преобразовать строку «A» в целое число. Что вы ожидаете от стоимости? Эта функция преобразует числовую строку в целое число (что-то вроде «123»). – Matthew

+0

zondo, я просто попробовал int (A.rstrip()), и он возвращает INTEGER CONVERTED FROM A STRING = .mp ValueError: недействительный литерал для int() с базой 10: '' – Mark

ответ

0

Вот ответ на мою проблему: Я побежал код с линией печатью («6», внутр («А») + 1, «а») заменяется печатью («6», внутр (A) +1, «abc») и не получил ошибок. - L. Kolar

Моя проблема была повреждена SD-картой. Я заменил его своей спиной и попробовал, что сказал Л.Колар, и жизнь снова хороша. Это сработало! Я потратил waaaay слишком много часов, чтобы дойти до этого момента, и поблагодарить всех, кто пытался мне помочь, с особой благодарностью Л.Колару.

Я проделал определенную работу по попытке запустить MySQL и думаю, что я должен был что-то изменить, чтобы повредить SD-карту во время процесса.