Python文件阅读器转换无效文字

时间:2015-06-15 10:25:05

标签: python

我一直在尝试制作读取文本文件的python代码,使其成为变量并使用i2c发送。下面是代码:

import serial
import smbus
import time
import sys

from time import sleep



# for RPI version 1, use "bus = smbus.SMBus(0)"
bus = smbus.SMBus(1)

# This is the address we setup in the Arduino Program
address = 0x04

loopvar = 1

while loopvar == 1:
    text_file = open("./PB_Vision/command.txt", "r")
    print text_file.read()
    visioncommando = text_file.read()
    print visioncommando

    def writeNumber(value):
        bus.write_byte(address, value)
        bus.write_byte_data(address, 0, value)
        return -1

    var = int(visioncommando)
    writeNumber(var)
    print ("RPI: Hi Arduino, I sent you")
    print (var)

    text_file.close()

当我运行它时,我得到它作为输出;

110

Traceback (most recent call last):
 File "testai.py", line 29, in <module>
  var = int(visioncommando)
ValueError: invalid literal for int() with base 10: ''

任何建议,修复?

无论如何都要提前感谢。

感谢您提出的建议,更接近工作项目。

3 个答案:

答案 0 :(得分:1)

删除它:

print text_file.read()

它会起作用。 迭代器只能使用一次......

答案 1 :(得分:1)

如果您的std::vector<A> vectorA; int main() { A a; // modifies a ... vectorA.push_back(std::move(a)); } 文件包含:

command.txt

然后以下代码出错:

110

您的第二次while loopvar == 1: text_file = open("./PB_Vision/command.txt", "r") print text_file.read() visioncommando = text_file.read() print visioncommando 来电将导致text_file.read()空字符串),因为您已经用尽了打开文件对象的内容。

你可以做点什么,而不是:

""

答案 2 :(得分:0)

你以错误的方式读取文件,python将110转换为int,但之后找到一个空字符串''。所以我建议在int()命令之前添加一个条件,str.isdigit()是一个很好的候选者。